gst/schedulers/gstoptimalscheduler.c: Added some more debug info and fixed a bug...
authorWim Taymans <wim.taymans@gmail.com>
Tue, 18 May 2004 16:44:44 +0000 (16:44 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Tue, 18 May 2004 16:44:44 +0000 (16:44 +0000)
Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (create_group),
(setup_group_scheduler), (loop_group_schedule_function),
(gst_opt_scheduler_pad_link):
Added some more debug info and fixed a bug where the group
type was set to LOOP but it was in fact unknown.

ChangeLog
gst/schedulers/gstoptimalscheduler.c

index c98bcbe5ebcb664171d519fdd05b34b54d0dde28..2ea640e128a013f343a66368ef28ee7fba2d8823 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-05-18  Wim Taymans  <wim@fluendo.com>
+
+       * gst/schedulers/gstoptimalscheduler.c: (create_group),
+       (setup_group_scheduler), (loop_group_schedule_function),
+       (gst_opt_scheduler_pad_link):
+       Added some more debug info and fixed a bug where the group
+       type was set to LOOP but it was in fact unknown.
+
 2004-05-18  Benjamin Otte  <in7y118@public.uni-hamburg.de>
 
        * gst/schedulers/entryscheduler.c: (gst_entry_scheduler_reset):
index 8a6b9eeafc30cb5d5c9c4336aed8b71a16fd5cd6..7f2ef8bfda52ae3834799da5177fe511b6e7f6d7 100644 (file)
@@ -145,6 +145,7 @@ GstOptSchedulerGroupFlags;
 
 typedef enum
 {
+  GST_OPT_SCHEDULER_GROUP_UNKNOWN = 3,
   GST_OPT_SCHEDULER_GROUP_GET = 1,
   GST_OPT_SCHEDULER_GROUP_LOOP = 2,
 }
@@ -775,7 +776,7 @@ create_group (GstOptSchedulerChain * chain, GstElement * element,
   GstOptSchedulerGroup *group;
 
   group = g_new0 (GstOptSchedulerGroup, 1);
-  GST_LOG ("new group %p", group);
+  GST_LOG ("new group %p, type %d", group, type);
   group->refcount = 1;          /* float... */
   group->flags = GST_OPT_SCHEDULER_GROUP_DISABLED;
   group->type = type;
@@ -909,6 +910,8 @@ setup_group_scheduler (GstOptScheduler * osched, GstOptSchedulerGroup * group)
 {
   GroupScheduleFunction wrapper;
 
+  GST_DEBUG ("setup group %p scheduler, type %d", group, group->type);
+
   wrapper = unknown_group_schedule_function;
 
   /* figure out the wrapper function for this group */
@@ -1219,7 +1222,10 @@ loop_group_schedule_function (int argc, char *argv[])
   GST_DEBUG ("calling loopfunc of element %s in group %p",
       GST_ELEMENT_NAME (entry), group);
 
-  entry->loopfunc (entry);
+  if (entry->loopfunc)
+    entry->loopfunc (entry);
+  else
+    group_error_handler (group);
 
   GST_LOG ("loopfunc ended of element %s in group %p",
       GST_ELEMENT_NAME (entry), group);
@@ -1923,9 +1929,10 @@ gst_opt_scheduler_pad_link (GstScheduler * sched, GstPad * srcpad,
       /* the two elements should be put into the same group, this also means
        * that they are in the same chain automatically, in case of a loop-based
        * src_element, there will be a group for src_element and sink_element
-       * will be added to it. */
+       * will be added to it. In the case a new group is created, we can't know
+       * the type so we pass UNKNOWN as an arg */
       group_elements (osched, src_element, sink_element,
-          GST_OPT_SCHEDULER_GROUP_LOOP);
+          GST_OPT_SCHEDULER_GROUP_UNKNOWN);
       break;
     case GST_OPT_GET_TO_LOOP:
       GST_LOG ("get to loop based link");