forked from mirrors/gstreamer-rs
Revert "gstreamer-editing-services: Move Asset::request_async method into manual code to add missing init assert"
This reverts commit 6db70eaa4b
. Not needed
anymore with latest gir.
This commit is contained in:
parent
adb6f66df2
commit
ac27258478
4 changed files with 55 additions and 79 deletions
|
@ -201,10 +201,6 @@ status = "generate"
|
||||||
[object.function.return]
|
[object.function.return]
|
||||||
bool_return_is_error = "Failed to unproxy asset"
|
bool_return_is_error = "Failed to unproxy asset"
|
||||||
|
|
||||||
[[object.function]]
|
|
||||||
name = "request_async"
|
|
||||||
ignore = true # manual skip_assert_initialized
|
|
||||||
|
|
||||||
[[object]]
|
[[object]]
|
||||||
name = "GES.Clip"
|
name = "GES.Clip"
|
||||||
status = "generate"
|
status = "generate"
|
||||||
|
|
|
@ -1,74 +0,0 @@
|
||||||
// Copyright (C) 2020 Guillaume Gomez <guillaume1.gomez@gmail.com>
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
|
|
||||||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
|
|
||||||
// option. This file may not be copied, modified, or distributed
|
|
||||||
// except according to those terms.
|
|
||||||
|
|
||||||
use gio;
|
|
||||||
use glib;
|
|
||||||
use glib::prelude::*;
|
|
||||||
use glib::translate::*;
|
|
||||||
use std::boxed::Box as Box_;
|
|
||||||
use std::pin::Pin;
|
|
||||||
use std::ptr;
|
|
||||||
use Asset;
|
|
||||||
|
|
||||||
impl Asset {
|
|
||||||
pub fn request_async<
|
|
||||||
P: IsA<gio::Cancellable>,
|
|
||||||
Q: FnOnce(Result<Asset, glib::Error>) + Send + 'static,
|
|
||||||
>(
|
|
||||||
extractable_type: glib::types::Type,
|
|
||||||
id: &str,
|
|
||||||
cancellable: Option<&P>,
|
|
||||||
callback: Q,
|
|
||||||
) {
|
|
||||||
assert_initialized_main_thread!();
|
|
||||||
let user_data: Box_<Q> = Box_::new(callback);
|
|
||||||
unsafe extern "C" fn request_async_trampoline<
|
|
||||||
Q: FnOnce(Result<Asset, glib::Error>) + Send + 'static,
|
|
||||||
>(
|
|
||||||
_source_object: *mut gobject_sys::GObject,
|
|
||||||
res: *mut gio_sys::GAsyncResult,
|
|
||||||
user_data: glib_sys::gpointer,
|
|
||||||
) {
|
|
||||||
let mut error = ptr::null_mut();
|
|
||||||
let ret = ges_sys::ges_asset_request_finish(res, &mut error);
|
|
||||||
let result = if error.is_null() {
|
|
||||||
Ok(from_glib_full(ret))
|
|
||||||
} else {
|
|
||||||
Err(from_glib_full(error))
|
|
||||||
};
|
|
||||||
let callback: Box_<Q> = Box_::from_raw(user_data as *mut _);
|
|
||||||
callback(result);
|
|
||||||
}
|
|
||||||
let callback = request_async_trampoline::<Q>;
|
|
||||||
unsafe {
|
|
||||||
ges_sys::ges_asset_request_async(
|
|
||||||
extractable_type.to_glib(),
|
|
||||||
id.to_glib_none().0,
|
|
||||||
cancellable.map(|p| p.as_ref()).to_glib_none().0,
|
|
||||||
Some(callback),
|
|
||||||
Box_::into_raw(user_data) as *mut _,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn request_async_future(
|
|
||||||
extractable_type: glib::types::Type,
|
|
||||||
id: &str,
|
|
||||||
) -> Pin<Box_<dyn std::future::Future<Output = Result<Asset, glib::Error>> + 'static>> {
|
|
||||||
skip_assert_initialized!();
|
|
||||||
let id = String::from(id);
|
|
||||||
Box_::pin(gio::GioFuture::new(&(), move |_obj, send| {
|
|
||||||
let cancellable = gio::Cancellable::new();
|
|
||||||
Self::request_async(extractable_type, &id, Some(&cancellable), move |res| {
|
|
||||||
send.resolve(res);
|
|
||||||
});
|
|
||||||
|
|
||||||
cancellable
|
|
||||||
}))
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -56,6 +56,61 @@ impl Asset {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn request_async<
|
||||||
|
P: IsA<gio::Cancellable>,
|
||||||
|
Q: FnOnce(Result<Asset, glib::Error>) + Send + 'static,
|
||||||
|
>(
|
||||||
|
extractable_type: glib::types::Type,
|
||||||
|
id: &str,
|
||||||
|
cancellable: Option<&P>,
|
||||||
|
callback: Q,
|
||||||
|
) {
|
||||||
|
assert_initialized_main_thread!();
|
||||||
|
let user_data: Box_<Q> = Box_::new(callback);
|
||||||
|
unsafe extern "C" fn request_async_trampoline<
|
||||||
|
Q: FnOnce(Result<Asset, glib::Error>) + Send + 'static,
|
||||||
|
>(
|
||||||
|
_source_object: *mut gobject_sys::GObject,
|
||||||
|
res: *mut gio_sys::GAsyncResult,
|
||||||
|
user_data: glib_sys::gpointer,
|
||||||
|
) {
|
||||||
|
let mut error = ptr::null_mut();
|
||||||
|
let ret = ges_sys::ges_asset_request_finish(res, &mut error);
|
||||||
|
let result = if error.is_null() {
|
||||||
|
Ok(from_glib_full(ret))
|
||||||
|
} else {
|
||||||
|
Err(from_glib_full(error))
|
||||||
|
};
|
||||||
|
let callback: Box_<Q> = Box_::from_raw(user_data as *mut _);
|
||||||
|
callback(result);
|
||||||
|
}
|
||||||
|
let callback = request_async_trampoline::<Q>;
|
||||||
|
unsafe {
|
||||||
|
ges_sys::ges_asset_request_async(
|
||||||
|
extractable_type.to_glib(),
|
||||||
|
id.to_glib_none().0,
|
||||||
|
cancellable.map(|p| p.as_ref()).to_glib_none().0,
|
||||||
|
Some(callback),
|
||||||
|
Box_::into_raw(user_data) as *mut _,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn request_async_future(
|
||||||
|
extractable_type: glib::types::Type,
|
||||||
|
id: &str,
|
||||||
|
) -> Pin<Box_<dyn std::future::Future<Output = Result<Asset, glib::Error>> + 'static>> {
|
||||||
|
let id = String::from(id);
|
||||||
|
Box_::pin(gio::GioFuture::new(&(), move |_obj, send| {
|
||||||
|
let cancellable = gio::Cancellable::new();
|
||||||
|
Self::request_async(extractable_type, &id, Some(&cancellable), move |res| {
|
||||||
|
send.resolve(res);
|
||||||
|
});
|
||||||
|
|
||||||
|
cancellable
|
||||||
|
}))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub const NONE_ASSET: Option<&Asset> = None;
|
pub const NONE_ASSET: Option<&Asset> = None;
|
||||||
|
|
|
@ -75,7 +75,6 @@ pub use auto::*;
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate bitflags;
|
extern crate bitflags;
|
||||||
|
|
||||||
mod asset;
|
|
||||||
mod timeline_element;
|
mod timeline_element;
|
||||||
pub use timeline_element::TimelineElementExtManual;
|
pub use timeline_element::TimelineElementExtManual;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue