mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-25 03:01:03 +00:00
element: When removing a ghost pad also unset its target
Otherwise the proxy pad of the ghost pad still stays linked to some element inside the bin, which is not allowed anymore according to the topology. In 2.0 this should be fixed more generically from inside GstGhostPad but currently there is no way to get notified that the ghost pad is unparented. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/553>
This commit is contained in:
parent
f836e267c1
commit
d22813ef97
1 changed files with 11 additions and 0 deletions
|
@ -95,6 +95,7 @@
|
||||||
#include "gstbus.h"
|
#include "gstbus.h"
|
||||||
#include "gsterror.h"
|
#include "gsterror.h"
|
||||||
#include "gstevent.h"
|
#include "gstevent.h"
|
||||||
|
#include "gstghostpad.h"
|
||||||
#include "gstutils.h"
|
#include "gstutils.h"
|
||||||
#include "gstinfo.h"
|
#include "gstinfo.h"
|
||||||
#include "gstquark.h"
|
#include "gstquark.h"
|
||||||
|
@ -884,6 +885,16 @@ gst_element_remove_pad (GstElement * element, GstPad * pad)
|
||||||
gst_object_unref (peer);
|
gst_object_unref (peer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* if this is a ghost pad we also need to unset the target or it
|
||||||
|
* will stay linked although not allowed according to the topology.
|
||||||
|
*
|
||||||
|
* FIXME 2.0: Do this generically somehow from inside GstGhostPad
|
||||||
|
* when it gets unparented.
|
||||||
|
*/
|
||||||
|
if (GST_IS_GHOST_PAD (pad)) {
|
||||||
|
gst_ghost_pad_set_target (GST_GHOST_PAD (pad), NULL);
|
||||||
|
}
|
||||||
|
|
||||||
GST_OBJECT_LOCK (element);
|
GST_OBJECT_LOCK (element);
|
||||||
/* remove it from the list */
|
/* remove it from the list */
|
||||||
switch (gst_pad_get_direction (pad)) {
|
switch (gst_pad_get_direction (pad)) {
|
||||||
|
|
Loading…
Reference in a new issue