forked from mirrors/gstreamer-rs
gstreamer/element: Let post_message() and post_error_message() take ownership of the message
This is more in line with the C API and simplifies callers in Rust.
This commit is contained in:
parent
71b83b7c84
commit
9cc99b27e0
14 changed files with 65 additions and 62 deletions
|
@ -512,6 +512,11 @@ manual_traits = ["ElementExtManual"]
|
|||
# manual implementation also works for earlier versions
|
||||
ignore = true
|
||||
|
||||
[[object.function]]
|
||||
name = "post_message"
|
||||
# takes ownership of message
|
||||
ignore = true
|
||||
|
||||
[[object.function]]
|
||||
name = "add_pad"
|
||||
[object.function.return]
|
||||
|
|
|
@ -554,7 +554,7 @@ where
|
|||
match imp.open(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -577,7 +577,7 @@ where
|
|||
match imp.close(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -600,7 +600,7 @@ where
|
|||
match imp.start(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -623,7 +623,7 @@ where
|
|||
match imp.stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -890,7 +890,7 @@ where
|
|||
match imp.propose_allocation(&wrap, query) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -915,7 +915,7 @@ where
|
|||
match imp.decide_allocation(&wrap, query) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -502,7 +502,7 @@ where
|
|||
match imp.open(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -525,7 +525,7 @@ where
|
|||
match imp.close(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -548,7 +548,7 @@ where
|
|||
match imp.start(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -571,7 +571,7 @@ where
|
|||
match imp.stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -807,7 +807,7 @@ where
|
|||
match imp.propose_allocation(&wrap, query) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -832,7 +832,7 @@ where
|
|||
match imp.decide_allocation(&wrap, query) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -888,7 +888,7 @@ where
|
|||
match imp.start(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -911,7 +911,7 @@ where
|
|||
match imp.stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -247,7 +247,7 @@ where
|
|||
match imp.start(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -270,7 +270,7 @@ where
|
|||
match imp.stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -295,7 +295,7 @@ where
|
|||
match imp.set_sink_caps(&wrap, &caps) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -421,7 +421,7 @@ where
|
|||
match imp.start(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -444,7 +444,7 @@ where
|
|||
match imp.stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -644,7 +644,7 @@ where
|
|||
match imp.unlock(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -667,7 +667,7 @@ where
|
|||
match imp.unlock_stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -614,7 +614,7 @@ where
|
|||
match imp.start(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -637,7 +637,7 @@ where
|
|||
match imp.stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -1006,7 +1006,7 @@ where
|
|||
match imp.unlock(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -1029,7 +1029,7 @@ where
|
|||
match imp.unlock_stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -923,7 +923,7 @@ where
|
|||
match imp.start(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -946,7 +946,7 @@ where
|
|||
match imp.stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -544,7 +544,7 @@ where
|
|||
match imp.open(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -567,7 +567,7 @@ where
|
|||
match imp.close(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -590,7 +590,7 @@ where
|
|||
match imp.start(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -613,7 +613,7 @@ where
|
|||
match imp.stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -877,7 +877,7 @@ where
|
|||
match imp.propose_allocation(&wrap, query) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -902,7 +902,7 @@ where
|
|||
match imp.decide_allocation(&wrap, query) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -478,7 +478,7 @@ where
|
|||
match imp.open(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -501,7 +501,7 @@ where
|
|||
match imp.close(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -524,7 +524,7 @@ where
|
|||
match imp.start(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -547,7 +547,7 @@ where
|
|||
match imp.stop(&wrap) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -770,7 +770,7 @@ where
|
|||
match imp.propose_allocation(&wrap, query) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
@ -795,7 +795,7 @@ where
|
|||
match imp.decide_allocation(&wrap, query) {
|
||||
Ok(()) => true,
|
||||
Err(err) => {
|
||||
wrap.post_error_message(&err);
|
||||
wrap.post_error_message(err);
|
||||
false
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,7 +19,6 @@ use Clock;
|
|||
use ClockTime;
|
||||
use Context;
|
||||
use ElementFactory;
|
||||
use Message;
|
||||
use Object;
|
||||
use Pad;
|
||||
use PadLinkCheck;
|
||||
|
@ -151,8 +150,6 @@ pub trait ElementExt: 'static {
|
|||
|
||||
fn no_more_pads(&self);
|
||||
|
||||
fn post_message(&self, message: &Message) -> Result<(), glib::error::BoolError>;
|
||||
|
||||
fn provide_clock(&self) -> Option<Clock>;
|
||||
|
||||
fn release_request_pad<P: IsA<Pad>>(&self, pad: &P);
|
||||
|
@ -524,18 +521,6 @@ impl<O: IsA<Element>> ElementExt for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn post_message(&self, message: &Message) -> Result<(), glib::error::BoolError> {
|
||||
unsafe {
|
||||
glib_result_from_gboolean!(
|
||||
gst_sys::gst_element_post_message(
|
||||
self.as_ref().to_glib_none().0,
|
||||
message.to_glib_full()
|
||||
),
|
||||
"Failed to post message"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fn provide_clock(&self) -> Option<Clock> {
|
||||
unsafe {
|
||||
from_glib_full(gst_sys::gst_element_provide_clock(
|
||||
|
|
|
@ -189,7 +189,8 @@ pub trait ElementExtManual: 'static {
|
|||
structure: ::Structure,
|
||||
);
|
||||
|
||||
fn post_error_message(&self, msg: &::ErrorMessage);
|
||||
fn post_message(&self, message: ::Message) -> Result<(), glib::error::BoolError>;
|
||||
fn post_error_message(&self, msg: ::ErrorMessage);
|
||||
|
||||
fn iterate_pads(&self) -> ::Iterator<Pad>;
|
||||
fn iterate_sink_pads(&self) -> ::Iterator<Pad>;
|
||||
|
@ -454,7 +455,19 @@ impl<O: IsA<Element>> ElementExtManual for O {
|
|||
}
|
||||
}
|
||||
|
||||
fn post_error_message(&self, msg: &::ErrorMessage) {
|
||||
fn post_message(&self, message: ::Message) -> Result<(), glib::error::BoolError> {
|
||||
unsafe {
|
||||
glib_result_from_gboolean!(
|
||||
gst_sys::gst_element_post_message(
|
||||
self.as_ref().to_glib_none().0,
|
||||
message.into_ptr()
|
||||
),
|
||||
"Failed to post message"
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fn post_error_message(&self, msg: ::ErrorMessage) {
|
||||
let ::ErrorMessage {
|
||||
error_domain,
|
||||
error_code,
|
||||
|
@ -463,7 +476,7 @@ impl<O: IsA<Element>> ElementExtManual for O {
|
|||
filename,
|
||||
function,
|
||||
line,
|
||||
} = *msg;
|
||||
} = msg;
|
||||
|
||||
unsafe {
|
||||
gst_sys::gst_element_message_full(
|
||||
|
|
|
@ -21,7 +21,7 @@ macro_rules! gst_panic_to_error(
|
|||
#[allow(clippy::unused_unit)]
|
||||
{
|
||||
if $panicked.load(Ordering::Relaxed) {
|
||||
$element.post_error_message(&gst_error_msg!($crate::LibraryError::Failed, ["Panicked"]));
|
||||
$element.post_error_message(gst_error_msg!($crate::LibraryError::Failed, ["Panicked"]));
|
||||
$ret
|
||||
} else {
|
||||
let result = panic::catch_unwind(AssertUnwindSafe(|| $code));
|
||||
|
@ -31,11 +31,11 @@ macro_rules! gst_panic_to_error(
|
|||
Err(err) => {
|
||||
$panicked.store(true, Ordering::Relaxed);
|
||||
if let Some(cause) = err.downcast_ref::<&str>() {
|
||||
$element.post_error_message(&gst_error_msg!($crate::LibraryError::Failed, ["Panicked: {}", cause]));
|
||||
$element.post_error_message(gst_error_msg!($crate::LibraryError::Failed, ["Panicked: {}", cause]));
|
||||
} else if let Some(cause) = err.downcast_ref::<String>() {
|
||||
$element.post_error_message(&gst_error_msg!($crate::LibraryError::Failed, ["Panicked: {}", cause]));
|
||||
$element.post_error_message(gst_error_msg!($crate::LibraryError::Failed, ["Panicked: {}", cause]));
|
||||
} else {
|
||||
$element.post_error_message(&gst_error_msg!($crate::LibraryError::Failed, ["Panicked"]));
|
||||
$element.post_error_message(gst_error_msg!($crate::LibraryError::Failed, ["Panicked"]));
|
||||
}
|
||||
$ret
|
||||
}
|
||||
|
|
|
@ -303,7 +303,7 @@ mod tutorial5 {
|
|||
// We are possibly in a GStreamer working thread, so we notify the main
|
||||
// thread of this event through a message in the bus
|
||||
fn post_app_message(playbin: &gst::Element) {
|
||||
let _ = playbin.post_message(&gst::message::Application::new(gst::Structure::new_empty(
|
||||
let _ = playbin.post_message(gst::message::Application::new(gst::Structure::new_empty(
|
||||
"tags-changed",
|
||||
)));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue