// Copyright (C) 2018 Sebastian Dröge // // Licensed under the Apache License, Version 2.0 or the MIT license // , at your // option. This file may not be copied, modified, or distributed // except according to those terms. use ffi; use NetClientClock; use gst; use glib::object::Downcast; use glib::translate::*; impl NetClientClock { pub fn new<'a, P: Into>>(name: P, remote_address: &str, remote_port: i32, base_time: gst::ClockTime) -> NetClientClock { assert_initialized_main_thread!(); let name = name.into(); let name = name.to_glib_none(); let (major, minor, _, _) = gst::version(); if (major, minor) > (1, 12) { unsafe { gst::Clock::from_glib_full(ffi::gst_net_client_clock_new(name.0, remote_address.to_glib_none().0, remote_port, base_time.to_glib())).downcast_unchecked() } } else { // Workaround for bad floating reference handling in 1.12. This issue was fixed for 1.13 unsafe { gst::Clock::from_glib_none(ffi::gst_net_client_clock_new(name.0, remote_address.to_glib_none().0, remote_port, base_time.to_glib())).downcast_unchecked() } } } }