WebRTC signallers still need to implement `Send` & `Sync`
As mentioned in this thread we still need to implement Send
& Sync
manually in the WebRTC signallers, though shouldn't be necessary anymore (given a few changes older than a year or so).
$ cargo cbuild -p gst-plugin-webrtc
Skipping git submodule `https://github.com/gtk-rs/gir` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir-files` due to update strategy in .gitmodules
Skipping git submodule `https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir-files` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir` due to update strategy in .gitmodules
Skipping git submodule `https://github.com/gtk-rs/gir-files` due to update strategy in .gitmodules
Compiling gst-plugin-webrtc v0.12.0-alpha.1 (/home/zelda/gst-plugins-rs/net/webrtc)
error[E0277]: `*mut c_void` cannot be sent between threads safely
--> net/webrtc/src/webrtcsink/imp.rs:3997:22
|
3997 | impl ElementImpl for BaseWebRTCSink {
| ^^^^^^^^^^^^^^ `*mut c_void` cannot be sent between threads safely
|
= help: the trait `std::marker::Send` is not implemented for `*mut c_void`
= note: required for `TypedObjectRef<*mut c_void, ()>` to implement `std::marker::Send`
note: required because it appears within the type `Signallable`
--> net/webrtc/src/signaller/mod.rs:28:16
|
28 | pub struct Signallable(ObjectInterface<iface::Signallable>);
| ^^^^^^^^^^^
note: required because it appears within the type `Settings`
--> net/webrtc/src/webrtcsink/imp.rs:76:8
|
76 | struct Settings {
| ^^^^^^^^
= note: required for `std::sync::Mutex<webrtcsink::imp::Settings>` to implement `std::marker::Sync`
note: required because it appears within the type `BaseWebRTCSink`
--> net/webrtc/src/webrtcsink/imp.rs:482:12
|
482 | pub struct BaseWebRTCSink {
| ^^^^^^^^^^^^^^
note: required by a bound in `gstreamer::subclass::prelude::ElementImpl`
--> /home/zelda/.cargo/git/checkouts/gstreamer-rs-79e52a2d27eb91a3/5fe76aa/gstreamer/src/subclass/element.rs:70:64
|
70 | pub trait ElementImpl: ElementImplExt + GstObjectImpl + Send + Sync {
| ^^^^ required by this bound in `ElementImpl`