mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2025-01-24 18:08:15 +00:00
webrtcsink: fix panic on pre-bwe request error
We dispose of consumer pipelines asynchronously, potentially after the session objects have been disposed of. As session objects are the owner of the cc element, it is entirely possible for the bwe-request signal to get emitted after cc has been disposed of, as the closure only takes a weak reference to it. Fix by simply checking if cc is None Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1045>
This commit is contained in:
parent
c8e8af3e81
commit
53ae335d22
1 changed files with 17 additions and 17 deletions
|
@ -1443,26 +1443,26 @@ impl WebRTCSink {
|
|||
false,
|
||||
glib::closure!(@watch element, @strong session_id, @weak-allow-none cc
|
||||
=> move |_webrtcbin: gst::Element, _transport: gst::Object| {
|
||||
if let Some(ref cc) = cc {
|
||||
let settings = element.imp().settings.lock().unwrap();
|
||||
|
||||
let cc = cc.unwrap();
|
||||
let settings = element.imp().settings.lock().unwrap();
|
||||
// TODO: Bind properties with @element's
|
||||
cc.set_properties(&[
|
||||
("min-bitrate", &settings.cc_info.min_bitrate),
|
||||
("estimated-bitrate", &settings.cc_info.start_bitrate),
|
||||
("max-bitrate", &settings.cc_info.max_bitrate),
|
||||
]);
|
||||
|
||||
// TODO: Bind properties with @element's
|
||||
cc.set_properties(&[
|
||||
("min-bitrate", &settings.cc_info.min_bitrate),
|
||||
("estimated-bitrate", &settings.cc_info.start_bitrate),
|
||||
("max-bitrate", &settings.cc_info.max_bitrate),
|
||||
]);
|
||||
cc.connect_notify(Some("estimated-bitrate"),
|
||||
glib::clone!(@weak element, @strong session_id
|
||||
=> move |bwe, pspec| {
|
||||
element.imp().set_bitrate(&element, &session_id,
|
||||
bwe.property::<u32>(pspec.name()));
|
||||
}
|
||||
));
|
||||
}
|
||||
|
||||
cc.connect_notify(Some("estimated-bitrate"),
|
||||
glib::clone!(@weak element, @strong session_id
|
||||
=> move |bwe, pspec| {
|
||||
element.imp().set_bitrate(&element, &session_id,
|
||||
bwe.property::<u32>(pspec.name()));
|
||||
}
|
||||
));
|
||||
|
||||
Some(cc)
|
||||
cc
|
||||
}),
|
||||
);
|
||||
|
||||
|
|
Loading…
Reference in a new issue