From ec6dde855a5dfd5f0ae94b0c1855272be449e410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 27 Oct 2017 17:55:48 +0200 Subject: [PATCH] Replace ulong for the property notify watches with a custom NotifyWatchId type --- gstreamer/src/auto/alias.rs | 2 +- gstreamer/src/auto/bin.rs | 2 +- gstreamer/src/auto/bus.rs | 2 +- gstreamer/src/auto/child_proxy.rs | 2 +- gstreamer/src/auto/clock.rs | 2 +- gstreamer/src/auto/date_time.rs | 2 +- gstreamer/src/auto/device.rs | 2 +- gstreamer/src/auto/device_monitor.rs | 2 +- gstreamer/src/auto/device_provider.rs | 2 +- gstreamer/src/auto/device_provider_factory.rs | 2 +- gstreamer/src/auto/element.rs | 26 +----- gstreamer/src/auto/element_factory.rs | 2 +- gstreamer/src/auto/enums.rs | 2 +- gstreamer/src/auto/flags.rs | 2 +- gstreamer/src/auto/functions.rs | 2 +- gstreamer/src/auto/ghost_pad.rs | 2 +- gstreamer/src/auto/mod.rs | 2 +- gstreamer/src/auto/object.rs | 2 +- gstreamer/src/auto/pad.rs | 2 +- gstreamer/src/auto/pad_template.rs | 2 +- gstreamer/src/auto/pipeline.rs | 2 +- gstreamer/src/auto/plugin.rs | 2 +- gstreamer/src/auto/preset.rs | 2 +- gstreamer/src/auto/proxy_pad.rs | 2 +- gstreamer/src/auto/stream.rs | 2 +- gstreamer/src/auto/stream_collection.rs | 2 +- gstreamer/src/auto/system_clock.rs | 2 +- gstreamer/src/auto/tag_setter.rs | 2 +- gstreamer/src/auto/toc_setter.rs | 2 +- gstreamer/src/auto/u_r_i_handler.rs | 2 +- gstreamer/src/element.rs | 81 ++++++++++++++++++- gstreamer/src/lib.rs | 2 +- 32 files changed, 111 insertions(+), 56 deletions(-) diff --git a/gstreamer/src/auto/alias.rs b/gstreamer/src/auto/alias.rs index 8c52aa1af..0fa51bb10 100644 --- a/gstreamer/src/auto/alias.rs +++ b/gstreamer/src/auto/alias.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT #[allow(unused_imports)] diff --git a/gstreamer/src/auto/bin.rs b/gstreamer/src/auto/bin.rs index 19608dd33..15e9709e8 100644 --- a/gstreamer/src/auto/bin.rs +++ b/gstreamer/src/auto/bin.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use ChildProxy; diff --git a/gstreamer/src/auto/bus.rs b/gstreamer/src/auto/bus.rs index e79e8ebc7..b05d739c9 100644 --- a/gstreamer/src/auto/bus.rs +++ b/gstreamer/src/auto/bus.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use ClockTime; diff --git a/gstreamer/src/auto/child_proxy.rs b/gstreamer/src/auto/child_proxy.rs index 52cb299b6..c61793f6e 100644 --- a/gstreamer/src/auto/child_proxy.rs +++ b/gstreamer/src/auto/child_proxy.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use ffi; diff --git a/gstreamer/src/auto/clock.rs b/gstreamer/src/auto/clock.rs index c488db78a..6ccca6a06 100644 --- a/gstreamer/src/auto/clock.rs +++ b/gstreamer/src/auto/clock.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use ClockTime; diff --git a/gstreamer/src/auto/date_time.rs b/gstreamer/src/auto/date_time.rs index b997cd5d0..3016a0962 100644 --- a/gstreamer/src/auto/date_time.rs +++ b/gstreamer/src/auto/date_time.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use ffi; diff --git a/gstreamer/src/auto/device.rs b/gstreamer/src/auto/device.rs index cf87847f3..505bf317b 100644 --- a/gstreamer/src/auto/device.rs +++ b/gstreamer/src/auto/device.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Caps; diff --git a/gstreamer/src/auto/device_monitor.rs b/gstreamer/src/auto/device_monitor.rs index caac849c6..7340ec9b9 100644 --- a/gstreamer/src/auto/device_monitor.rs +++ b/gstreamer/src/auto/device_monitor.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Bus; diff --git a/gstreamer/src/auto/device_provider.rs b/gstreamer/src/auto/device_provider.rs index 882021c09..79efce201 100644 --- a/gstreamer/src/auto/device_provider.rs +++ b/gstreamer/src/auto/device_provider.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Bus; diff --git a/gstreamer/src/auto/device_provider_factory.rs b/gstreamer/src/auto/device_provider_factory.rs index 2c6dfdeed..1d503bc1c 100644 --- a/gstreamer/src/auto/device_provider_factory.rs +++ b/gstreamer/src/auto/device_provider_factory.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use DeviceProvider; diff --git a/gstreamer/src/auto/element.rs b/gstreamer/src/auto/element.rs index ac59e3973..c088addff 100644 --- a/gstreamer/src/auto/element.rs +++ b/gstreamer/src/auto/element.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Bus; @@ -89,12 +89,6 @@ pub trait ElementExt { fn add_pad>(&self, pad: &P) -> Result<(), glib::error::BoolError>; - #[cfg(any(feature = "v1_10", feature = "dox"))] - fn add_property_deep_notify_watch<'a, P: Into>>(&self, property_name: P, include_value: bool) -> libc::c_ulong; - - #[cfg(any(feature = "v1_10", feature = "dox"))] - fn add_property_notify_watch<'a, P: Into>>(&self, property_name: P, include_value: bool) -> libc::c_ulong; - //#[cfg(any(feature = "v1_10", feature = "dox"))] //fn call_async>>(&self, func: /*Unknown conversion*//*Unimplemented*/ElementCallAsyncFunc, user_data: P, destroy_notify: /*Unknown conversion*//*Unimplemented*/DestroyNotify); @@ -222,24 +216,6 @@ impl + IsA> ElementExt for O { } } - #[cfg(any(feature = "v1_10", feature = "dox"))] - fn add_property_deep_notify_watch<'a, P: Into>>(&self, property_name: P, include_value: bool) -> libc::c_ulong { - let property_name = property_name.into(); - let property_name = property_name.to_glib_none(); - unsafe { - ffi::gst_element_add_property_deep_notify_watch(self.to_glib_none().0, property_name.0, include_value.to_glib()) - } - } - - #[cfg(any(feature = "v1_10", feature = "dox"))] - fn add_property_notify_watch<'a, P: Into>>(&self, property_name: P, include_value: bool) -> libc::c_ulong { - let property_name = property_name.into(); - let property_name = property_name.to_glib_none(); - unsafe { - ffi::gst_element_add_property_notify_watch(self.to_glib_none().0, property_name.0, include_value.to_glib()) - } - } - //#[cfg(any(feature = "v1_10", feature = "dox"))] //fn call_async>>(&self, func: /*Unknown conversion*//*Unimplemented*/ElementCallAsyncFunc, user_data: P, destroy_notify: /*Unknown conversion*//*Unimplemented*/DestroyNotify) { // unsafe { TODO: call ffi::gst_element_call_async() } diff --git a/gstreamer/src/auto/element_factory.rs b/gstreamer/src/auto/element_factory.rs index c5181d505..86093c441 100644 --- a/gstreamer/src/auto/element_factory.rs +++ b/gstreamer/src/auto/element_factory.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Caps; diff --git a/gstreamer/src/auto/enums.rs b/gstreamer/src/auto/enums.rs index 7983621ed..99fdc2b0f 100644 --- a/gstreamer/src/auto/enums.rs +++ b/gstreamer/src/auto/enums.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use ffi; diff --git a/gstreamer/src/auto/flags.rs b/gstreamer/src/auto/flags.rs index c44926223..37d6a8831 100644 --- a/gstreamer/src/auto/flags.rs +++ b/gstreamer/src/auto/flags.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use ffi; diff --git a/gstreamer/src/auto/functions.rs b/gstreamer/src/auto/functions.rs index aecc6b1e7..76751ef81 100644 --- a/gstreamer/src/auto/functions.rs +++ b/gstreamer/src/auto/functions.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Bin; diff --git a/gstreamer/src/auto/ghost_pad.rs b/gstreamer/src/auto/ghost_pad.rs index 492939cb8..b9cf13834 100644 --- a/gstreamer/src/auto/ghost_pad.rs +++ b/gstreamer/src/auto/ghost_pad.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Object; diff --git a/gstreamer/src/auto/mod.rs b/gstreamer/src/auto/mod.rs index 4c7c3ff11..89bdabe3a 100644 --- a/gstreamer/src/auto/mod.rs +++ b/gstreamer/src/auto/mod.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT mod bin; diff --git a/gstreamer/src/auto/object.rs b/gstreamer/src/auto/object.rs index f49af4081..6446a5115 100644 --- a/gstreamer/src/auto/object.rs +++ b/gstreamer/src/auto/object.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use ClockTime; diff --git a/gstreamer/src/auto/pad.rs b/gstreamer/src/auto/pad.rs index ce66d31f8..5a49bd692 100644 --- a/gstreamer/src/auto/pad.rs +++ b/gstreamer/src/auto/pad.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Caps; diff --git a/gstreamer/src/auto/pad_template.rs b/gstreamer/src/auto/pad_template.rs index bc5cc9aab..38dae91a0 100644 --- a/gstreamer/src/auto/pad_template.rs +++ b/gstreamer/src/auto/pad_template.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Caps; diff --git a/gstreamer/src/auto/pipeline.rs b/gstreamer/src/auto/pipeline.rs index 18d2aab34..4c4c88228 100644 --- a/gstreamer/src/auto/pipeline.rs +++ b/gstreamer/src/auto/pipeline.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Bin; diff --git a/gstreamer/src/auto/plugin.rs b/gstreamer/src/auto/plugin.rs index e28fe849d..2a54aff7f 100644 --- a/gstreamer/src/auto/plugin.rs +++ b/gstreamer/src/auto/plugin.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Error; diff --git a/gstreamer/src/auto/preset.rs b/gstreamer/src/auto/preset.rs index aab354bef..5d25fd99e 100644 --- a/gstreamer/src/auto/preset.rs +++ b/gstreamer/src/auto/preset.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use ffi; diff --git a/gstreamer/src/auto/proxy_pad.rs b/gstreamer/src/auto/proxy_pad.rs index 32dc50dcf..bb11e3a8c 100644 --- a/gstreamer/src/auto/proxy_pad.rs +++ b/gstreamer/src/auto/proxy_pad.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Object; diff --git a/gstreamer/src/auto/stream.rs b/gstreamer/src/auto/stream.rs index 91c716f02..5b625daf9 100644 --- a/gstreamer/src/auto/stream.rs +++ b/gstreamer/src/auto/stream.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Caps; diff --git a/gstreamer/src/auto/stream_collection.rs b/gstreamer/src/auto/stream_collection.rs index b922b9a38..940715926 100644 --- a/gstreamer/src/auto/stream_collection.rs +++ b/gstreamer/src/auto/stream_collection.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Object; diff --git a/gstreamer/src/auto/system_clock.rs b/gstreamer/src/auto/system_clock.rs index 5d4048557..20fe07f1a 100644 --- a/gstreamer/src/auto/system_clock.rs +++ b/gstreamer/src/auto/system_clock.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Clock; diff --git a/gstreamer/src/auto/tag_setter.rs b/gstreamer/src/auto/tag_setter.rs index a1d78a111..3d4cafea4 100644 --- a/gstreamer/src/auto/tag_setter.rs +++ b/gstreamer/src/auto/tag_setter.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Element; diff --git a/gstreamer/src/auto/toc_setter.rs b/gstreamer/src/auto/toc_setter.rs index 978f6f497..dd10ad3f9 100644 --- a/gstreamer/src/auto/toc_setter.rs +++ b/gstreamer/src/auto/toc_setter.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Element; diff --git a/gstreamer/src/auto/u_r_i_handler.rs b/gstreamer/src/auto/u_r_i_handler.rs index 16f037042..b39f55050 100644 --- a/gstreamer/src/auto/u_r_i_handler.rs +++ b/gstreamer/src/auto/u_r_i_handler.rs @@ -1,4 +1,4 @@ -// This file was generated by gir (0fe730d) from gir-files (???) +// This file was generated by gir (12a28ac) from gir-files (???) // DO NOT EDIT use Error; diff --git a/gstreamer/src/element.rs b/gstreamer/src/element.rs index 5442a7fa4..0bd5ffc02 100644 --- a/gstreamer/src/element.rs +++ b/gstreamer/src/element.rs @@ -10,7 +10,8 @@ use Element; use glib; use glib::IsA; -use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlibPtrContainer, ToGlibPtr}; +use glib::translate::{from_glib, from_glib_full, from_glib_none, FromGlib, FromGlibPtrContainer, + ToGlib, ToGlibPtr}; use QueryRef; use Event; use Pad; @@ -19,6 +20,8 @@ use miniobject::MiniObject; use std::ffi::CStr; +use libc; + use ffi; use gobject_ffi; @@ -56,6 +59,24 @@ pub enum ElementMessageType { Info, } +#[derive(Debug, Default, PartialEq, Eq)] +pub struct NotifyWatchId(libc::c_ulong); + +impl ToGlib for NotifyWatchId { + type GlibType = libc::c_ulong; + + fn to_glib(&self) -> libc::c_ulong { + self.0 + } +} + +impl FromGlib for NotifyWatchId { + fn from_glib(val: libc::c_ulong) -> NotifyWatchId { + skip_assert_initialized!(); + NotifyWatchId(val) + } +} + pub trait ElementExtManual { fn query(&self, query: &mut QueryRef) -> bool; @@ -96,6 +117,23 @@ pub trait ElementExtManual { fn get_pads(&self) -> Vec; fn get_sink_pads(&self) -> Vec; fn get_src_pads(&self) -> Vec; + + #[cfg(any(feature = "v1_10", feature = "dox"))] + fn add_property_deep_notify_watch<'a, P: Into>>( + &self, + property_name: P, + include_value: bool, + ) -> NotifyWatchId; + + #[cfg(any(feature = "v1_10", feature = "dox"))] + fn add_property_notify_watch<'a, P: Into>>( + &self, + property_name: P, + include_value: bool, + ) -> NotifyWatchId; + + #[cfg(any(feature = "v1_10", feature = "dox"))] + fn remove_property_notify_watch(&self, watch_id: NotifyWatchId); } impl> ElementExtManual for O { @@ -258,6 +296,47 @@ impl> ElementExtManual for O { FromGlibPtrContainer::from_glib_none(elt.srcpads) } } + + #[cfg(any(feature = "v1_10", feature = "dox"))] + fn add_property_deep_notify_watch<'a, P: Into>>( + &self, + property_name: P, + include_value: bool, + ) -> NotifyWatchId { + let property_name = property_name.into(); + let property_name = property_name.to_glib_none(); + unsafe { + from_glib(ffi::gst_element_add_property_deep_notify_watch( + self.to_glib_none().0, + property_name.0, + include_value.to_glib(), + )) + } + } + + #[cfg(any(feature = "v1_10", feature = "dox"))] + fn add_property_notify_watch<'a, P: Into>>( + &self, + property_name: P, + include_value: bool, + ) -> NotifyWatchId { + let property_name = property_name.into(); + let property_name = property_name.to_glib_none(); + unsafe { + from_glib(ffi::gst_element_add_property_notify_watch( + self.to_glib_none().0, + property_name.0, + include_value.to_glib(), + )) + } + } + + #[cfg(any(feature = "v1_10", feature = "dox"))] + fn remove_property_notify_watch(&self, watch_id: NotifyWatchId) { + unsafe { + ffi::gst_element_remove_property_notify_watch(self.to_glib_none().0, watch_id.0); + } + } } lazy_static!{ diff --git a/gstreamer/src/lib.rs b/gstreamer/src/lib.rs index 5889a6a5c..3e206047a 100644 --- a/gstreamer/src/lib.rs +++ b/gstreamer/src/lib.rs @@ -100,7 +100,7 @@ mod tag_setter; mod iterator; mod device_provider; mod parse_context; -pub use element::{ElementExtManual, ElementMessageType}; +pub use element::{ElementExtManual, ElementMessageType, NotifyWatchId}; pub use element::{ELEMENT_METADATA_AUTHOR, ELEMENT_METADATA_DESCRIPTION, ELEMENT_METADATA_DOC_URI, ELEMENT_METADATA_ICON_NAME, ELEMENT_METADATA_KLASS, ELEMENT_METADATA_LONGNAME}; pub use bin::BinExtManual;