From eeb5cd2321c7b5c8c4c7570ec08e78b9e68e75f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= Date: Mon, 19 Aug 2019 08:45:07 +0200 Subject: [PATCH] cssanimatedstyle: Avoid unnecessary transition work No need to do all the transition work if the transition duration will be 0 for all of them. --- gtk/gtkcssanimatedstyle.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/gtk/gtkcssanimatedstyle.c b/gtk/gtkcssanimatedstyle.c index 2b75451840..21cc98c4fc 100644 --- a/gtk/gtkcssanimatedstyle.c +++ b/gtk/gtkcssanimatedstyle.c @@ -272,12 +272,18 @@ gtk_css_animated_style_create_css_transitions (GSList *animations, GtkCssValue *durations, *delays, *timing_functions; guint i; - transition_infos_set (transitions, gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_TRANSITION_PROPERTY)); - durations = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_TRANSITION_DURATION); delays = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_TRANSITION_DELAY); timing_functions = gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_TRANSITION_TIMING_FUNCTION); + if (_gtk_css_array_value_get_n_values (durations) == 1 && + _gtk_css_array_value_get_n_values (delays) == 1 && + _gtk_css_number_value_get (_gtk_css_array_value_get_nth (durations, 0), 100) + + _gtk_css_number_value_get (_gtk_css_array_value_get_nth (delays, 0), 100) == 0) + return animations; + + transition_infos_set (transitions, gtk_css_style_get_value (base_style, GTK_CSS_PROPERTY_TRANSITION_PROPERTY)); + for (i = 0; i < GTK_CSS_PROPERTY_N_PROPERTIES; i++) { GtkStyleAnimation *animation;