forked from mirrors/gstreamer-rs
Allow no value for the PropertyNotify message
It can contain no value. Also use &ToSendValue instead of an actual value for building the message.
This commit is contained in:
parent
52ca97e7e6
commit
b9c4e4cd6e
1 changed files with 17 additions and 8 deletions
|
@ -319,12 +319,12 @@ impl GstRc<MessageRef> {
|
|||
}
|
||||
|
||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||
pub fn new_property_notify<'a>(
|
||||
pub fn new_property_notify<'a, V: Into<Option<&'a glib::ToSendValue>>>(
|
||||
property_name: &'a str,
|
||||
value: &'a glib::Value,
|
||||
value: V,
|
||||
) -> PropertyNotifyBuilder<'a> {
|
||||
assert_initialized_main_thread!();
|
||||
PropertyNotifyBuilder::new(property_name, value)
|
||||
PropertyNotifyBuilder::new(property_name, value.into())
|
||||
}
|
||||
|
||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||
|
@ -1058,7 +1058,7 @@ impl<'a> DeviceRemoved<'a> {
|
|||
pub struct PropertyNotify<'a>(&'a MessageRef);
|
||||
impl<'a> PropertyNotify<'a> {
|
||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||
pub fn get(&self) -> (Object, &str, ::Value) {
|
||||
pub fn get(&self) -> (Object, &str, Option<&'a ::Value>) {
|
||||
unsafe {
|
||||
let mut object = ptr::null_mut();
|
||||
let mut property_name = ptr::null();
|
||||
|
@ -1074,7 +1074,11 @@ impl<'a> PropertyNotify<'a> {
|
|||
(
|
||||
from_glib_none(object),
|
||||
CStr::from_ptr(property_name).to_str().unwrap(),
|
||||
from_glib_none(value),
|
||||
if value.is_null() {
|
||||
None
|
||||
} else {
|
||||
Some(&*(value as *const glib::Value))
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -2283,11 +2287,11 @@ pub struct PropertyNotifyBuilder<'a> {
|
|||
seqnum: Option<Seqnum>,
|
||||
other_fields: Vec<(&'a str, &'a ToSendValue)>,
|
||||
property_name: &'a str,
|
||||
value: &'a glib::Value,
|
||||
value: Option<&'a glib::ToSendValue>,
|
||||
}
|
||||
#[cfg(any(feature = "v1_10", feature = "dox"))]
|
||||
impl<'a> PropertyNotifyBuilder<'a> {
|
||||
fn new(property_name: &'a str, value: &'a glib::Value) -> Self {
|
||||
fn new(property_name: &'a str, value: Option<&'a glib::ToSendValue>) -> Self {
|
||||
skip_assert_initialized!();
|
||||
Self {
|
||||
src: None,
|
||||
|
@ -2299,10 +2303,15 @@ impl<'a> PropertyNotifyBuilder<'a> {
|
|||
}
|
||||
|
||||
message_builder_generic_impl!(|s: &mut Self, src| {
|
||||
let val = s.value.map(|v| v.to_send_value());
|
||||
ffi::gst_message_new_property_notify(
|
||||
src,
|
||||
s.property_name.to_glib_none().0,
|
||||
mut_override(s.value.to_glib_none().0),
|
||||
mut_override(
|
||||
val.as_ref()
|
||||
.map(|v| v.to_glib_none().0)
|
||||
.unwrap_or(ptr::null()),
|
||||
),
|
||||
)
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue