csscomputedvalues: Handle starting animations differently

This commit is contained in:
Benjamin Otte
2012-09-16 19:07:40 +02:00
parent bf19d89510
commit e2cc9f3afc
3 changed files with 26 additions and 28 deletions

View File

@ -364,9 +364,9 @@ gtk_css_computed_values_find_transition (GtkCssComputedValues *values,
} }
static void static void
gtk_css_computed_values_start_transitions (GtkCssComputedValues *values, gtk_css_computed_values_create_css_transitions (GtkCssComputedValues *values,
gint64 timestamp, gint64 timestamp,
GtkCssComputedValues *source) GtkCssComputedValues *source)
{ {
TransitionInfo transitions[GTK_CSS_PROPERTY_N_PROPERTIES] = { { 0, } }; TransitionInfo transitions[GTK_CSS_PROPERTY_N_PROPERTIES] = { { 0, } };
GtkCssValue *durations, *delays, *timing_functions; GtkCssValue *durations, *delays, *timing_functions;
@ -432,9 +432,9 @@ gtk_css_computed_values_find_animation (GtkCssComputedValues *values,
} }
static void static void
gtk_css_computed_values_start_css_animations (GtkCssComputedValues *values, gtk_css_computed_values_create_css_animations (GtkCssComputedValues *values,
gint64 timestamp, gint64 timestamp,
GtkStyleContext *context) GtkStyleContext *context)
{ {
GtkStyleProviderPrivate *provider; GtkStyleProviderPrivate *provider;
GtkCssValue *durations, *delays, *timing_functions, *animations; GtkCssValue *durations, *delays, *timing_functions, *animations;
@ -487,18 +487,13 @@ gtk_css_computed_values_start_css_animations (GtkCssComputedValues *values,
/* PUBLIC API */ /* PUBLIC API */
void void
_gtk_css_computed_values_start_animations (GtkCssComputedValues *values, _gtk_css_computed_values_create_animations (GtkCssComputedValues *values,
gint64 timestamp, gint64 timestamp,
GtkCssComputedValues *source, GtkCssComputedValues *source,
GtkStyleContext *context) GtkStyleContext *context)
{ {
GtkBitmask *ignore; gtk_css_computed_values_create_css_transitions (values, timestamp, source);
gtk_css_computed_values_create_css_animations (values, timestamp, context);
gtk_css_computed_values_start_transitions (values, timestamp, source);
gtk_css_computed_values_start_css_animations (values, timestamp, context);
ignore = _gtk_css_computed_values_advance (values, timestamp);
_gtk_bitmask_free (ignore);
} }
GtkBitmask * GtkBitmask *

View File

@ -88,7 +88,7 @@ GtkCssValue * _gtk_css_computed_values_get_intrinsic_value (GtkCssCom
GtkBitmask * _gtk_css_computed_values_get_difference (GtkCssComputedValues *values, GtkBitmask * _gtk_css_computed_values_get_difference (GtkCssComputedValues *values,
GtkCssComputedValues *other); GtkCssComputedValues *other);
void _gtk_css_computed_values_start_animations (GtkCssComputedValues *values, void _gtk_css_computed_values_create_animations (GtkCssComputedValues *values,
gint64 timestamp, gint64 timestamp,
GtkCssComputedValues *source, GtkCssComputedValues *source,
GtkStyleContext *context); GtkStyleContext *context);

View File

@ -3041,10 +3041,10 @@ gtk_style_context_should_animate (GtkStyleContext *context)
} }
static void static void
gtk_style_context_start_animations (GtkStyleContext *context, gtk_style_context_create_animations (GtkStyleContext *context,
GtkCssComputedValues *values, GtkCssComputedValues *values,
GtkCssComputedValues *previous, GtkCssComputedValues *previous,
gint64 timestamp) gint64 timestamp)
{ {
if (!gtk_style_context_should_animate (context)) if (!gtk_style_context_should_animate (context))
{ {
@ -3052,10 +3052,10 @@ gtk_style_context_start_animations (GtkStyleContext *context,
return; return;
} }
_gtk_css_computed_values_start_animations (values, _gtk_css_computed_values_create_animations (values,
timestamp, timestamp,
previous, previous,
context); context);
if (_gtk_css_computed_values_is_static (values)) if (_gtk_css_computed_values_is_static (values))
{ {
@ -3168,8 +3168,11 @@ _gtk_style_context_validate (GtkStyleContext *context,
data = style_data_lookup (context); data = style_data_lookup (context);
gtk_style_context_start_animations (context, data->store, current->store, timestamp); gtk_style_context_create_animations (context, data->store, current->store, timestamp);
change &= ~GTK_CSS_CHANGE_ANIMATE; if (_gtk_css_computed_values_is_static (data->store))
change &= ~GTK_CSS_CHANGE_ANIMATE;
else
change |= GTK_CSS_CHANGE_ANIMATE;
changes = _gtk_css_computed_values_get_difference (data->store, current->store); changes = _gtk_css_computed_values_get_difference (data->store, current->store);
} }