- enable chain if an active group is added to it
authorWim Taymans <wim.taymans@gmail.com>
Fri, 28 Mar 2003 17:29:57 +0000 (17:29 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Fri, 28 Mar 2003 17:29:57 +0000 (17:29 +0000)
Original commit message from CVS:
- enable chain if an active group is added to it
- enable group if a PLAYING element is added to it

gst/schedulers/gstoptimalscheduler.c

index 3290a4a..0b6df27 100644 (file)
@@ -172,7 +172,11 @@ static GstOptSchedulerGroup*       ref_group_by_count      (GstOptSchedulerGroup *group,
 #endif
 static GstOptSchedulerGroup*   unref_group             (GstOptSchedulerGroup *group);
 static void                    destroy_group           (GstOptSchedulerGroup *group);
+static void                    group_element_set_enabled (GstOptSchedulerGroup *group, 
+                                                          GstElement *element, gboolean enabled);
 
+static void            chain_group_set_enabled         (GstOptSchedulerChain *chain, 
+                                                        GstOptSchedulerGroup *group, gboolean enabled);
 /* 
  * Scheduler private data for an element 
  */
@@ -425,6 +429,10 @@ add_to_chain (GstOptSchedulerChain *chain, GstOptSchedulerGroup *group)
   chain->groups = g_slist_prepend (chain->groups, group);
   chain->num_groups++;
 
+  if (GST_OPT_SCHEDULER_GROUP_IS_ENABLED (group)) {
+    chain_group_set_enabled (chain, group, TRUE);
+  }
+
   return chain;
 }
 
@@ -587,6 +595,10 @@ add_to_group (GstOptSchedulerGroup *group, GstElement *element)
   group->elements = g_slist_prepend (group->elements, element);
   group->num_elements++;
 
+  if (gst_element_get_state (element) == GST_STATE_PLAYING) {
+    group_element_set_enabled (group, element, TRUE);
+  }
+
   return group;
 }