/* Set to TRUE when the container is doing updates of track object
* properties so we don't end up in infinite property update loops
*/
- gboolean ignore_notifies;
+ GESChildrenControlMode children_control_mode;
GHashTable *mappings;
guint nb_effects;
GESTimelineElement *initiated_move;
GST_DEBUG_OBJECT (element, "Setting children start, (initiated_move: %"
GST_PTR_FORMAT ")", container->priv->initiated_move);
- container->priv->ignore_notifies = TRUE;
+ container->priv->children_control_mode = GES_CHILDREN_IGNORE_NOTIFIES;
for (tmp = container->children; tmp; tmp = g_list_next (tmp)) {
GESTimelineElement *child = (GESTimelineElement *) tmp->data;
map->start_offset = start - _START (child);
}
}
- container->priv->ignore_notifies = FALSE;
+ priv->children_control_mode = GES_CHILDREN_UPDATE;
return TRUE;
}
GList *tmp;
GESContainer *container = GES_CONTAINER (element);
- container->priv->ignore_notifies = TRUE;
+ container->priv->children_control_mode = GES_CHILDREN_IGNORE_NOTIFIES;
for (tmp = container->children; tmp; tmp = g_list_next (tmp)) {
GESTimelineElement *child = (GESTimelineElement *) tmp->data;
ChildMapping *map = g_hash_table_lookup (container->priv->mappings, child);
_set_inpoint0 (child, inpoint);
}
- container->priv->ignore_notifies = FALSE;
+ container->priv->children_control_mode = GES_CHILDREN_UPDATE;
return TRUE;
}
GESContainer *container = GES_CONTAINER (element);
GESContainerPrivate *priv = container->priv;
- priv->ignore_notifies = TRUE;
+ priv->children_control_mode = GES_CHILDREN_IGNORE_NOTIFIES;
for (tmp = container->children; tmp; tmp = g_list_next (tmp)) {
GESTimelineElement *child = (GESTimelineElement *) tmp->data;
ChildMapping *map = g_hash_table_lookup (priv->mappings, child);
NULL, GES_EDGE_END, _START (child) + duration, TRUE) == FALSE)
_set_duration0 (GES_TIMELINE_ELEMENT (child), duration);
}
- priv->ignore_notifies = FALSE;
+ priv->children_control_mode = GES_CHILDREN_UPDATE;
return TRUE;
}
GES_CONTAINER_GET_CLASS (element)->get_priorty_range (container, &min_prio,
&max_prio);
- priv->ignore_notifies = TRUE; /* */
+ priv->children_control_mode = GES_CHILDREN_IGNORE_NOTIFIES;
for (tmp = container->children; tmp; tmp = g_list_next (tmp)) {
GESTimelineElement *child = (GESTimelineElement *) tmp->data;
ChildMapping *map = g_hash_table_lookup (priv->mappings, child);
}
_set_priority0 (child, real_tck_prio);
}
- priv->ignore_notifies = FALSE;
+ priv->children_control_mode = GES_CHILDREN_UPDATE;
update_height (container);
GESContainerPrivate *priv = container->priv;
GESTimelineElement *element = GES_TIMELINE_ELEMENT (container);
- if (priv->ignore_notifies)
+ if (priv->children_control_mode == GES_CHILDREN_IGNORE_NOTIFIES)
return;
map = g_hash_table_lookup (priv->mappings, child);
GESContainerPrivate *priv = container->priv;
GESTimelineElement *element = GES_TIMELINE_ELEMENT (container);
- if (priv->ignore_notifies)
+ if (priv->children_control_mode == GES_CHILDREN_IGNORE_NOTIFIES)
return;
map = g_hash_table_lookup (priv->mappings, child);
GESContainerPrivate *priv = container->priv;
GESTimelineElement *element = GES_TIMELINE_ELEMENT (container);
- if (priv->ignore_notifies)
+ if (priv->children_control_mode == GES_CHILDREN_IGNORE_NOTIFIES)
return;
map = g_hash_table_lookup (priv->mappings, child);
GST_DEBUG_OBJECT (container, "TimelineElement %p priority changed to %i",
child, _PRIORITY (child));
- if (priv->ignore_notifies)
+ if (priv->children_control_mode == GES_CHILDREN_IGNORE_NOTIFIES)
return;
update_height (container);
}
void
-_ges_container_set_ignore_notifies (GESContainer * container,
- gboolean ignore_notifies)
+_ges_container_set_children_control_mode (GESContainer * container,
+ GESChildrenControlMode children_control_mode)
{
- container->priv->ignore_notifies = ignore_notifies;
+ container->priv->children_control_mode = children_control_mode;
}
/**********************************************
GST_DEBUG_OBJECT (container, "adding timeline element %" GST_PTR_FORMAT,
child);
- priv->ignore_notifies = TRUE;
+ priv->children_control_mode = GES_CHILDREN_IGNORE_NOTIFIES;
if (class->add_child) {
if (class->add_child (container, child) == FALSE) {
- priv->ignore_notifies = FALSE;
+ priv->children_control_mode = GES_CHILDREN_UPDATE;
GST_WARNING_OBJECT (container, "Erreur adding child %p", child);
return FALSE;
}
}
- priv->ignore_notifies = FALSE;
+ priv->children_control_mode = GES_CHILDREN_UPDATE;
mapping = g_slice_new0 (ChildMapping);
mapping->child = gst_object_ref (child);