mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-30 12:49:40 +00:00
Never take away the group from a loop based element
Original commit message from CVS: Never take away the group from a loop based element
This commit is contained in:
parent
a82c7a7572
commit
aab288b33e
1 changed files with 32 additions and 9 deletions
|
@ -734,7 +734,7 @@ group_element_set_enabled (GstOptSchedulerGroup *group, GstElement *element, gbo
|
|||
static gboolean
|
||||
schedule_group (GstOptSchedulerGroup *group)
|
||||
{
|
||||
if (!group->entry)
|
||||
if (!group->entry || group->schedulefunc == NULL)
|
||||
return FALSE;
|
||||
|
||||
#ifdef USE_COTHREADS
|
||||
|
@ -1710,25 +1710,48 @@ gst_opt_scheduler_pad_unlink (GstScheduler *sched, GstPad *srcpad, GstPad *sinkp
|
|||
|
||||
/* now check which one of the elements we can remove from the group */
|
||||
if (!still_link1) {
|
||||
gboolean need_remove = TRUE;
|
||||
|
||||
GST_INFO (GST_CAT_SCHEDULING, "element1 is separated from the group");
|
||||
|
||||
/* see if the element was an entry point for the group */
|
||||
if (group->entry == element1) {
|
||||
/* we're going to remove the element so we need to clear it as the
|
||||
* entry point */
|
||||
group->entry = NULL;
|
||||
if (group->type == GST_OPT_SCHEDULER_GROUP_LOOP) {
|
||||
/* for entry points of a loop based group we need to be
|
||||
* carefull as we assert that the loop based element always
|
||||
* has a group */
|
||||
need_remove = FALSE;
|
||||
}
|
||||
else {
|
||||
/* we're going to remove the element so we need to clear it as the
|
||||
* entry point */
|
||||
group->entry = NULL;
|
||||
}
|
||||
}
|
||||
remove_from_group (group, element1);
|
||||
if (need_remove)
|
||||
remove_from_group (group, element1);
|
||||
}
|
||||
if (!still_link2) {
|
||||
gboolean need_remove = TRUE;
|
||||
|
||||
GST_INFO (GST_CAT_SCHEDULING, "element2 is separated from the group");
|
||||
|
||||
/* see if the element was an entry point for the group */
|
||||
if (group->entry == element2) {
|
||||
/* we're going to remove the element so we need to clear it as the
|
||||
* entry point */
|
||||
group->entry = NULL;
|
||||
if (group->type == GST_OPT_SCHEDULER_GROUP_LOOP) {
|
||||
/* for entry points of a loop based group we need to be
|
||||
* carefull as we assert that the loop based element always
|
||||
* has a group */
|
||||
need_remove = FALSE;
|
||||
}
|
||||
else {
|
||||
/* we're going to remove the element so we need to clear it as the
|
||||
* entry point */
|
||||
group->entry = NULL;
|
||||
}
|
||||
}
|
||||
remove_from_group (group, element2);
|
||||
if (need_remove)
|
||||
remove_from_group (group, element2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue