From: Benjamin Otte Date: Mon, 17 Sep 2012 08:53:16 +0000 (+0200) Subject: stylecontext: Clear animations for values kept in cache X-Git-Url: http://pileus.org/git/?a=commitdiff_plain;h=13cbd22d178b571b8e0a3ebaf4bfecd007519069;p=~andy%2Fgtk stylecontext: Clear animations for values kept in cache --- diff --git a/gtk/gtkcsscomputedvalues.c b/gtk/gtkcsscomputedvalues.c index f9ec618c9..7ec040ea5 100644 --- a/gtk/gtkcsscomputedvalues.c +++ b/gtk/gtkcsscomputedvalues.c @@ -565,3 +565,19 @@ _gtk_css_computed_values_is_static (GtkCssComputedValues *values) return TRUE; } + +void +_gtk_css_computed_values_cancel_animations (GtkCssComputedValues *values) +{ + g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values)); + + if (values->animated_values) + { + g_ptr_array_unref (values->animated_values); + values->animated_values = NULL; + } + + g_slist_free_full (values->animations, g_object_unref); + values->animations = NULL; +} + diff --git a/gtk/gtkcsscomputedvaluesprivate.h b/gtk/gtkcsscomputedvaluesprivate.h index 32b70bc72..b9b761846 100644 --- a/gtk/gtkcsscomputedvaluesprivate.h +++ b/gtk/gtkcsscomputedvaluesprivate.h @@ -94,6 +94,7 @@ void _gtk_css_computed_values_create_animations (GtkCssCom GtkStyleContext *context); GtkBitmask * _gtk_css_computed_values_advance (GtkCssComputedValues *values, gint64 timestamp); +void _gtk_css_computed_values_cancel_animations (GtkCssComputedValues *values); gboolean _gtk_css_computed_values_is_static (GtkCssComputedValues *values); G_END_DECLS diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index 538897af2..e36015c40 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -3173,6 +3173,9 @@ _gtk_style_context_validate (GtkStyleContext *context, change |= GTK_CSS_CHANGE_ANIMATE; changes = _gtk_css_computed_values_get_difference (data->store, current->store); + + /* In the case where we keep the cache, we want unanimated values */ + _gtk_css_computed_values_cancel_animations (current->store); } else {