mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer-rs.git
synced 2025-02-20 12:56:22 +00:00
Get rid of fragile dependency and use GLib API instead
This commit is contained in:
parent
13eb483444
commit
06cf5de45f
4 changed files with 7 additions and 9 deletions
|
@ -23,7 +23,6 @@ gst = { package = "gstreamer", path = "../gstreamer" }
|
||||||
gst-base = { package = "gstreamer-base", path = "../gstreamer-base" }
|
gst-base = { package = "gstreamer-base", path = "../gstreamer-base" }
|
||||||
once_cell = "1.0"
|
once_cell = "1.0"
|
||||||
futures-channel = "0.3"
|
futures-channel = "0.3"
|
||||||
fragile = "1"
|
|
||||||
serde = { version = "1.0", optional = true, features = ["derive"] }
|
serde = { version = "1.0", optional = true, features = ["derive"] }
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
|
|
|
@ -58,7 +58,7 @@ pub fn convert_sample_async_local<F>(
|
||||||
.acquire()
|
.acquire()
|
||||||
.expect("thread default main context already acquired by another thread");
|
.expect("thread default main context already acquired by another thread");
|
||||||
|
|
||||||
let func = fragile::Fragile::new(func);
|
let func = glib::thread_guard::ThreadGuard::new(func);
|
||||||
|
|
||||||
convert_sample_async_unsafe(sample, caps, timeout, move |res| (func.into_inner())(res))
|
convert_sample_async_unsafe(sample, caps, timeout, move |res| (func.into_inner())(res))
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,6 @@ serde_bytes = { version = "0.11", optional = true }
|
||||||
paste = "1.0"
|
paste = "1.0"
|
||||||
pretty-hex = "0.2"
|
pretty-hex = "0.2"
|
||||||
thiserror = "1"
|
thiserror = "1"
|
||||||
fragile = "1"
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
ron = "0.7"
|
ron = "0.7"
|
||||||
|
|
|
@ -13,8 +13,6 @@ use std::mem::transmute;
|
||||||
use std::pin::Pin;
|
use std::pin::Pin;
|
||||||
use std::task::{Context, Poll};
|
use std::task::{Context, Poll};
|
||||||
|
|
||||||
use fragile::Fragile;
|
|
||||||
|
|
||||||
use crate::Bus;
|
use crate::Bus;
|
||||||
use crate::BusSyncReply;
|
use crate::BusSyncReply;
|
||||||
use crate::Message;
|
use crate::Message;
|
||||||
|
@ -48,20 +46,22 @@ unsafe extern "C" fn trampoline_watch_local<F: FnMut(&Bus, &Message) -> Continue
|
||||||
msg: *mut ffi::GstMessage,
|
msg: *mut ffi::GstMessage,
|
||||||
func: gpointer,
|
func: gpointer,
|
||||||
) -> gboolean {
|
) -> gboolean {
|
||||||
let func: &Fragile<RefCell<F>> = &*(func as *const Fragile<RefCell<F>>);
|
let func: &glib::thread_guard::ThreadGuard<RefCell<F>> =
|
||||||
(&mut *func.get().borrow_mut())(&from_glib_borrow(bus), &Message::from_glib_borrow(msg))
|
&*(func as *const glib::thread_guard::ThreadGuard<RefCell<F>>);
|
||||||
|
(&mut *func.get_ref().borrow_mut())(&from_glib_borrow(bus), &Message::from_glib_borrow(msg))
|
||||||
.into_glib()
|
.into_glib()
|
||||||
}
|
}
|
||||||
|
|
||||||
unsafe extern "C" fn destroy_closure_watch_local<F: FnMut(&Bus, &Message) -> Continue + 'static>(
|
unsafe extern "C" fn destroy_closure_watch_local<F: FnMut(&Bus, &Message) -> Continue + 'static>(
|
||||||
ptr: gpointer,
|
ptr: gpointer,
|
||||||
) {
|
) {
|
||||||
Box::<Fragile<RefCell<F>>>::from_raw(ptr as *mut _);
|
Box::<glib::thread_guard::ThreadGuard<RefCell<F>>>::from_raw(ptr as *mut _);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn into_raw_watch_local<F: FnMut(&Bus, &Message) -> Continue + 'static>(func: F) -> gpointer {
|
fn into_raw_watch_local<F: FnMut(&Bus, &Message) -> Continue + 'static>(func: F) -> gpointer {
|
||||||
#[allow(clippy::type_complexity)]
|
#[allow(clippy::type_complexity)]
|
||||||
let func: Box<Fragile<RefCell<F>>> = Box::new(Fragile::new(RefCell::new(func)));
|
let func: Box<glib::thread_guard::ThreadGuard<RefCell<F>>> =
|
||||||
|
Box::new(glib::thread_guard::ThreadGuard::new(RefCell::new(func)));
|
||||||
Box::into_raw(func) as gpointer
|
Box::into_raw(func) as gpointer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue