gst/schedulers/gstoptimalscheduler.c: Aplied patch #154061. Running a pipeline in which an element calls GST_ELEMENT_...

Original commit message from CVS:
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(gst_opt_scheduler_iterate):
Aplied patch #154061. Running a pipeline in which an element
calls GST_ELEMENT_ERROR in the chain function, the opt
scheduler doesn't unref the chain so it never gets freed.
This commit is contained in:
Wim Taymans 2004-11-02 13:08:41 +00:00
parent 824c331e32
commit 6a110e062f
2 changed files with 10 additions and 0 deletions

View file

@ -1,3 +1,11 @@
2004-11-02 Sebastien Cote <sc5 at hermes.usherb.ca>
* gst/schedulers/gstoptimalscheduler.c: (add_to_group),
(gst_opt_scheduler_iterate):
Aplied patch #154061. Running a pipeline in which an element
calls GST_ELEMENT_ERROR in the chain function, the opt
scheduler doesn't unref the chain so it never gets freed.
2004-11-02 Wim Taymans <wim@fluendo.com> 2004-11-02 Wim Taymans <wim@fluendo.com>
* gst/gststructure.c: (gst_structure_get_abbrs), * gst/gststructure.c: (gst_structure_get_abbrs),

View file

@ -2607,6 +2607,8 @@ gst_opt_scheduler_iterate (GstScheduler * sched)
/* don't schedule any more chains when in error */ /* don't schedule any more chains when in error */
if (osched->state == GST_OPT_SCHEDULER_STATE_ERROR) { if (osched->state == GST_OPT_SCHEDULER_STATE_ERROR) {
GST_ERROR_OBJECT (sched, "in error state"); GST_ERROR_OBJECT (sched, "in error state");
/* unref the chain here as we move out of the while loop */
unref_chain (chain);
break; break;
} else if (osched->state == GST_OPT_SCHEDULER_STATE_INTERRUPTED) { } else if (osched->state == GST_OPT_SCHEDULER_STATE_INTERRUPTED) {
GST_DEBUG_OBJECT (osched, "got interrupted, continue with next chain"); GST_DEBUG_OBJECT (osched, "got interrupted, continue with next chain");