// This file was generated by gir (https://github.com/gtk-rs/gir) // from gir-files (https://github.com/gtk-rs/gir-files) // from gst-gir-files (https://gitlab.freedesktop.org/gstreamer/gir-files-rs.git) // DO NOT EDIT use glib::{ prelude::*, signal::{connect_raw, SignalHandlerId}, translate::*, }; use std::{boxed::Box as Box_, mem::transmute}; glib::wrapper! { #[doc(alias = "GstTestClock")] pub struct TestClock(Object) @extends gst::Clock, gst::Object; match fn { type_ => || ffi::gst_test_clock_get_type(), } } impl TestClock { #[doc(alias = "gst_test_clock_new")] pub fn new() -> TestClock { assert_initialized_main_thread!(); unsafe { gst::Clock::from_glib_full(ffi::gst_test_clock_new()).unsafe_cast() } } #[doc(alias = "gst_test_clock_new_with_start_time")] #[doc(alias = "new_with_start_time")] pub fn with_start_time(start_time: gst::ClockTime) -> TestClock { assert_initialized_main_thread!(); unsafe { gst::Clock::from_glib_full(ffi::gst_test_clock_new_with_start_time( start_time.into_glib(), )) .unsafe_cast() } } #[doc(alias = "gst_test_clock_advance_time")] pub fn advance_time(&self, delta: gst::ClockTimeDiff) { unsafe { ffi::gst_test_clock_advance_time(self.to_glib_none().0, delta); } } #[doc(alias = "gst_test_clock_crank")] pub fn crank(&self) -> bool { unsafe { from_glib(ffi::gst_test_clock_crank(self.to_glib_none().0)) } } #[doc(alias = "gst_test_clock_get_next_entry_time")] #[doc(alias = "get_next_entry_time")] pub fn next_entry_time(&self) -> Option { unsafe { from_glib(ffi::gst_test_clock_get_next_entry_time( self.to_glib_none().0, )) } } #[doc(alias = "gst_test_clock_peek_id_count")] pub fn peek_id_count(&self) -> u32 { unsafe { ffi::gst_test_clock_peek_id_count(self.to_glib_none().0) } } #[doc(alias = "gst_test_clock_set_time")] pub fn set_time(&self, new_time: gst::ClockTime) { unsafe { ffi::gst_test_clock_set_time(self.to_glib_none().0, new_time.into_glib()); } } #[doc(alias = "gst_test_clock_wait_for_pending_id_count")] pub fn wait_for_pending_id_count(&self, count: u32) { unsafe { ffi::gst_test_clock_wait_for_pending_id_count(self.to_glib_none().0, count); } } #[doc(alias = "clock-type")] pub fn clock_type(&self) -> gst::ClockType { glib::ObjectExt::property(self, "clock-type") } #[doc(alias = "clock-type")] pub fn set_clock_type(&self, clock_type: gst::ClockType) { glib::ObjectExt::set_property(self, "clock-type", clock_type) } #[doc(alias = "start-time")] pub fn start_time(&self) -> u64 { glib::ObjectExt::property(self, "start-time") } //#[doc(alias = "gst_test_clock_id_list_get_latest_time")] //pub fn id_list_get_latest_time(pending_list: /*Unimplemented*/&[&gst::ClockID]) -> Option { // unsafe { TODO: call ffi:gst_test_clock_id_list_get_latest_time() } //} #[doc(alias = "clock-type")] pub fn connect_clock_type_notify( &self, f: F, ) -> SignalHandlerId { unsafe extern "C" fn notify_clock_type_trampoline< F: Fn(&TestClock) + Send + Sync + 'static, >( this: *mut ffi::GstTestClock, _param_spec: glib::ffi::gpointer, f: glib::ffi::gpointer, ) { let f: &F = &*(f as *const F); f(&from_glib_borrow(this)) } unsafe { let f: Box_ = Box_::new(f); connect_raw( self.as_ptr() as *mut _, b"notify::clock-type\0".as_ptr() as *const _, Some(transmute::<_, unsafe extern "C" fn()>( notify_clock_type_trampoline:: as *const (), )), Box_::into_raw(f), ) } } } impl Default for TestClock { fn default() -> Self { Self::new() } } unsafe impl Send for TestClock {} unsafe impl Sync for TestClock {}