diff --git a/gstreamer/src/bin.rs b/gstreamer/src/bin.rs index 8116a963e..48427e6a9 100644 --- a/gstreamer/src/bin.rs +++ b/gstreamer/src/bin.rs @@ -7,6 +7,7 @@ // except according to those terms. use Bin; +use BinFlags; use Element; use LoggableError; @@ -48,6 +49,12 @@ pub trait GstBinExtManual: 'static { details: ::DebugGraphDetails, file_name: Q, ); + + fn set_bin_flags(&self, flags: BinFlags); + + fn unset_bin_flags(&self, flags: BinFlags); + + fn get_bin_flags(&self) -> BinFlags; } impl> GstBinExtManual for O { @@ -170,6 +177,30 @@ impl> GstBinExtManual for O { ) { ::debug_bin_to_dot_file_with_ts(self, details, file_name) } + + fn set_bin_flags(&self, flags: BinFlags) { + unsafe { + let ptr: *mut gst_sys::GstObject = self.as_ptr() as *mut _; + let _guard = ::utils::MutexGuard::lock(&(*ptr).lock); + (*ptr).flags |= flags.to_glib(); + } + } + + fn unset_bin_flags(&self, flags: BinFlags) { + unsafe { + let ptr: *mut gst_sys::GstObject = self.as_ptr() as *mut _; + let _guard = ::utils::MutexGuard::lock(&(*ptr).lock); + (*ptr).flags &= !flags.to_glib(); + } + } + + fn get_bin_flags(&self) -> BinFlags { + unsafe { + let ptr: *mut gst_sys::GstObject = self.as_ptr() as *mut _; + let _guard = ::utils::MutexGuard::lock(&(*ptr).lock); + from_glib((*ptr).flags) + } + } } unsafe extern "C" fn do_latency_trampoline< diff --git a/gstreamer/src/pad.rs b/gstreamer/src/pad.rs index 69da1d6ec..130c9da51 100644 --- a/gstreamer/src/pad.rs +++ b/gstreamer/src/pad.rs @@ -7,7 +7,6 @@ // except according to those terms. use miniobject::MiniObject; -use BinFlags; use Buffer; use BufferList; use Event; @@ -19,6 +18,7 @@ use FormattedValue; use GenericFormattedValue; use LoggableError; use Pad; +use PadFlags; use PadLinkCheck; use PadLinkError; use PadLinkReturn; @@ -260,11 +260,11 @@ pub trait PadExtManual: 'static { fn store_sticky_event(&self, event: &Event) -> Result; - fn set_bin_flags(&self, flags: BinFlags); + fn set_pad_flags(&self, flags: PadFlags); - fn unset_bin_flags(&self, flags: BinFlags); + fn unset_pad_flags(&self, flags: PadFlags); - fn get_bin_flags(&self) -> BinFlags; + fn get_pad_flags(&self) -> PadFlags; } impl> PadExtManual for O { @@ -991,7 +991,7 @@ impl> PadExtManual for O { ret.into_result() } - fn set_bin_flags(&self, flags: BinFlags) { + fn set_pad_flags(&self, flags: PadFlags) { unsafe { let ptr: *mut gst_sys::GstObject = self.as_ptr() as *mut _; let _guard = ::utils::MutexGuard::lock(&(*ptr).lock); @@ -999,7 +999,7 @@ impl> PadExtManual for O { } } - fn unset_bin_flags(&self, flags: BinFlags) { + fn unset_pad_flags(&self, flags: PadFlags) { unsafe { let ptr: *mut gst_sys::GstObject = self.as_ptr() as *mut _; let _guard = ::utils::MutexGuard::lock(&(*ptr).lock); @@ -1007,7 +1007,7 @@ impl> PadExtManual for O { } } - fn get_bin_flags(&self) -> BinFlags { + fn get_pad_flags(&self) -> PadFlags { unsafe { let ptr: *mut gst_sys::GstObject = self.as_ptr() as *mut _; let _guard = ::utils::MutexGuard::lock(&(*ptr).lock);