[gtk/wip/baedert/for-master: 3/20] cssanimatedstyle: Avoid unnecessary transition work



commit d4657df9017efded2cdafc31167e047c3033a5e7
Author: Timm Bäder <mail baedert org>
Date:   Mon Aug 19 08:45:07 2019 +0200

    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;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]