mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2024-11-23 03:50:59 +00:00
fallbacksrc: Unset ghost pad targets before removing from the element
Workaround for https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/553
This commit is contained in:
parent
bde998ce50
commit
2192c9d3b4
1 changed files with 6 additions and 3 deletions
|
@ -95,7 +95,7 @@ struct Stream {
|
||||||
switch: gst::Element,
|
switch: gst::Element,
|
||||||
|
|
||||||
// output source pad, connected to switch
|
// output source pad, connected to switch
|
||||||
srcpad: gst::Pad,
|
srcpad: gst::GhostPad,
|
||||||
}
|
}
|
||||||
|
|
||||||
struct State {
|
struct State {
|
||||||
|
@ -938,7 +938,8 @@ impl FallbackSrc {
|
||||||
element.remove(&stream.switch).unwrap();
|
element.remove(&stream.switch).unwrap();
|
||||||
element.remove(&stream.clocksync).unwrap();
|
element.remove(&stream.clocksync).unwrap();
|
||||||
element.remove(&stream.fallback_input).unwrap();
|
element.remove(&stream.fallback_input).unwrap();
|
||||||
element.remove_pad(&stream.srcpad).unwrap();
|
let _ = stream.srcpad.set_target(None::<&gst::Pad>);
|
||||||
|
let _ = element.remove_pad(&stream.srcpad);
|
||||||
}
|
}
|
||||||
state.video_stream = None;
|
state.video_stream = None;
|
||||||
state.audio_stream = None;
|
state.audio_stream = None;
|
||||||
|
@ -1980,7 +1981,7 @@ mod custom_source {
|
||||||
|
|
||||||
struct Stream {
|
struct Stream {
|
||||||
source_pad: gst::Pad,
|
source_pad: gst::Pad,
|
||||||
ghost_pad: gst::Pad,
|
ghost_pad: gst::GhostPad,
|
||||||
// Dummy stream we created
|
// Dummy stream we created
|
||||||
stream: gst::Stream,
|
stream: gst::Stream,
|
||||||
}
|
}
|
||||||
|
@ -2292,6 +2293,7 @@ mod custom_source {
|
||||||
drop(state);
|
drop(state);
|
||||||
|
|
||||||
ghost_pad.set_active(false).unwrap();
|
ghost_pad.set_active(false).unwrap();
|
||||||
|
let _ = ghost_pad.set_target(None::<&gst::Pad>);
|
||||||
let _ = element.remove_pad(&ghost_pad);
|
let _ = element.remove_pad(&ghost_pad);
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
|
@ -2335,6 +2337,7 @@ mod custom_source {
|
||||||
drop(state);
|
drop(state);
|
||||||
|
|
||||||
for pad in pads {
|
for pad in pads {
|
||||||
|
let _ = pad.ghost_pad.set_target(None::<&gst::Pad>);
|
||||||
let _ = element.remove_pad(&pad.ghost_pad);
|
let _ = element.remove_pad(&pad.ghost_pad);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue