+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):
typedef enum
{
+ GST_OPT_SCHEDULER_GROUP_UNKNOWN = 3,
GST_OPT_SCHEDULER_GROUP_GET = 1,
GST_OPT_SCHEDULER_GROUP_LOOP = 2,
}
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;
{
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 */
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);
/* 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");