use core::cell::UnsafeCell;
use core::ffi::*;
use core::marker::{PhantomData, PhantomPinned};
use core::ptr::NonNull;
#[cfg(feature = "objc2")]
use objc2::__framework_prelude::*;
use objc2_core_foundation::*;
#[cfg(feature = "objc2-core-graphics")]
use objc2_core_graphics::*;
#[cfg(feature = "objc2-open-gl")]
#[cfg(target_os = "macos")]
use objc2_open_gl::*;
use crate::*;
#[doc(alias = "CVDisplayLinkRef")]
#[repr(C)]
pub struct CVDisplayLink {
inner: [u8; 0],
_p: UnsafeCell<PhantomData<(*const UnsafeCell<()>, PhantomPinned)>>,
}
cf_type!(
unsafe impl CVDisplayLink {}
);
#[cfg(feature = "objc2")]
cf_objc2_type!(
unsafe impl RefEncode<"__CVDisplayLink"> for CVDisplayLink {}
);
#[cfg(all(feature = "CVBase", feature = "CVReturn"))]
pub type CVDisplayLinkOutputCallback = Option<
unsafe extern "C-unwind" fn(
NonNull<CVDisplayLink>,
NonNull<CVTimeStamp>,
NonNull<CVTimeStamp>,
CVOptionFlags,
NonNull<CVOptionFlags>,
*mut c_void,
) -> CVReturn,
>;
#[cfg(all(feature = "CVBase", feature = "CVReturn", feature = "block2"))]
pub type CVDisplayLinkOutputHandler = *mut block2::DynBlock<
dyn Fn(
NonNull<CVDisplayLink>,
NonNull<CVTimeStamp>,
NonNull<CVTimeStamp>,
CVOptionFlags,
NonNull<CVOptionFlags>,
) -> CVReturn,
>;
unsafe impl ConcreteType for CVDisplayLink {
#[doc(alias = "CVDisplayLinkGetTypeID")]
#[inline]
fn type_id() -> CFTypeID {
extern "C-unwind" {
fn CVDisplayLinkGetTypeID() -> CFTypeID;
}
unsafe { CVDisplayLinkGetTypeID() }
}
}
impl CVDisplayLink {
#[doc(alias = "CVDisplayLinkCreateWithCGDisplays")]
#[cfg(all(feature = "CVReturn", feature = "objc2-core-graphics"))]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub unsafe fn create_with_cg_displays(
display_array: NonNull<CGDirectDisplayID>,
count: CFIndex,
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkCreateWithCGDisplays(
display_array: NonNull<CGDirectDisplayID>,
count: CFIndex,
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn;
}
unsafe { CVDisplayLinkCreateWithCGDisplays(display_array, count, display_link_out) }
}
#[doc(alias = "CVDisplayLinkCreateWithOpenGLDisplayMask")]
#[cfg(all(feature = "CVReturn", feature = "objc2-core-graphics"))]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub unsafe fn create_with_open_gl_display_mask(
mask: CGOpenGLDisplayMask,
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkCreateWithOpenGLDisplayMask(
mask: CGOpenGLDisplayMask,
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn;
}
unsafe { CVDisplayLinkCreateWithOpenGLDisplayMask(mask, display_link_out) }
}
#[doc(alias = "CVDisplayLinkCreateWithCGDisplay")]
#[cfg(all(feature = "CVReturn", feature = "objc2-core-graphics"))]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub unsafe fn create_with_cg_display(
display_id: CGDirectDisplayID,
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkCreateWithCGDisplay(
display_id: CGDirectDisplayID,
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn;
}
unsafe { CVDisplayLinkCreateWithCGDisplay(display_id, display_link_out) }
}
#[doc(alias = "CVDisplayLinkCreateWithActiveCGDisplays")]
#[cfg(feature = "CVReturn")]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub unsafe fn create_with_active_cg_displays(
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkCreateWithActiveCGDisplays(
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn;
}
unsafe { CVDisplayLinkCreateWithActiveCGDisplays(display_link_out) }
}
#[doc(alias = "CVDisplayLinkSetCurrentCGDisplay")]
#[cfg(all(feature = "CVReturn", feature = "objc2-core-graphics"))]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub fn set_current_cg_display(&self, display_id: CGDirectDisplayID) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkSetCurrentCGDisplay(
display_link: &CVDisplayLink,
display_id: CGDirectDisplayID,
) -> CVReturn;
}
unsafe { CVDisplayLinkSetCurrentCGDisplay(self, display_id) }
}
#[doc(alias = "CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext")]
#[cfg(all(feature = "CVReturn", feature = "objc2-open-gl"))]
#[cfg(target_os = "macos")]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub unsafe fn set_current_cg_display_from_open_gl_context(
&self,
cgl_context: CGLContextObj,
cgl_pixel_format: CGLPixelFormatObj,
) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext(
display_link: &CVDisplayLink,
cgl_context: CGLContextObj,
cgl_pixel_format: CGLPixelFormatObj,
) -> CVReturn;
}
unsafe {
CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext(self, cgl_context, cgl_pixel_format)
}
}
#[doc(alias = "CVDisplayLinkGetCurrentCGDisplay")]
#[cfg(feature = "objc2-core-graphics")]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub fn current_cg_display(&self) -> CGDirectDisplayID {
extern "C-unwind" {
fn CVDisplayLinkGetCurrentCGDisplay(display_link: &CVDisplayLink) -> CGDirectDisplayID;
}
unsafe { CVDisplayLinkGetCurrentCGDisplay(self) }
}
#[doc(alias = "CVDisplayLinkSetOutputCallback")]
#[cfg(all(feature = "CVBase", feature = "CVReturn"))]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub unsafe fn set_output_callback(
&self,
callback: CVDisplayLinkOutputCallback,
user_info: *mut c_void,
) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkSetOutputCallback(
display_link: &CVDisplayLink,
callback: CVDisplayLinkOutputCallback,
user_info: *mut c_void,
) -> CVReturn;
}
unsafe { CVDisplayLinkSetOutputCallback(self, callback, user_info) }
}
#[doc(alias = "CVDisplayLinkSetOutputHandler")]
#[cfg(all(feature = "CVBase", feature = "CVReturn", feature = "block2"))]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub unsafe fn set_output_handler(&self, handler: CVDisplayLinkOutputHandler) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkSetOutputHandler(
display_link: &CVDisplayLink,
handler: CVDisplayLinkOutputHandler,
) -> CVReturn;
}
unsafe { CVDisplayLinkSetOutputHandler(self, handler) }
}
#[doc(alias = "CVDisplayLinkStart")]
#[cfg(feature = "CVReturn")]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub fn start(&self) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkStart(display_link: &CVDisplayLink) -> CVReturn;
}
unsafe { CVDisplayLinkStart(self) }
}
#[doc(alias = "CVDisplayLinkStop")]
#[cfg(feature = "CVReturn")]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub fn stop(&self) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkStop(display_link: &CVDisplayLink) -> CVReturn;
}
unsafe { CVDisplayLinkStop(self) }
}
#[doc(alias = "CVDisplayLinkGetNominalOutputVideoRefreshPeriod")]
#[cfg(feature = "CVBase")]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub fn nominal_output_video_refresh_period(&self) -> CVTime {
extern "C-unwind" {
fn CVDisplayLinkGetNominalOutputVideoRefreshPeriod(
display_link: &CVDisplayLink,
) -> CVTime;
}
unsafe { CVDisplayLinkGetNominalOutputVideoRefreshPeriod(self) }
}
#[doc(alias = "CVDisplayLinkGetOutputVideoLatency")]
#[cfg(feature = "CVBase")]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub fn output_video_latency(&self) -> CVTime {
extern "C-unwind" {
fn CVDisplayLinkGetOutputVideoLatency(display_link: &CVDisplayLink) -> CVTime;
}
unsafe { CVDisplayLinkGetOutputVideoLatency(self) }
}
#[doc(alias = "CVDisplayLinkGetActualOutputVideoRefreshPeriod")]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub fn actual_output_video_refresh_period(&self) -> c_double {
extern "C-unwind" {
fn CVDisplayLinkGetActualOutputVideoRefreshPeriod(
display_link: &CVDisplayLink,
) -> c_double;
}
unsafe { CVDisplayLinkGetActualOutputVideoRefreshPeriod(self) }
}
#[doc(alias = "CVDisplayLinkIsRunning")]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub fn is_running(&self) -> bool {
extern "C-unwind" {
fn CVDisplayLinkIsRunning(display_link: &CVDisplayLink) -> Boolean;
}
let ret = unsafe { CVDisplayLinkIsRunning(self) };
ret != 0
}
#[doc(alias = "CVDisplayLinkGetCurrentTime")]
#[cfg(all(feature = "CVBase", feature = "CVReturn"))]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub unsafe fn current_time(&self, out_time: NonNull<CVTimeStamp>) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkGetCurrentTime(
display_link: &CVDisplayLink,
out_time: NonNull<CVTimeStamp>,
) -> CVReturn;
}
unsafe { CVDisplayLinkGetCurrentTime(self, out_time) }
}
#[doc(alias = "CVDisplayLinkTranslateTime")]
#[cfg(all(feature = "CVBase", feature = "CVReturn"))]
#[deprecated = "use NSView.displayLink(target:selector:), NSWindow.displayLink(target:selector:), or NSScreen.displayLink(target:selector:) "]
#[inline]
pub unsafe fn translate_time(
&self,
in_time: NonNull<CVTimeStamp>,
out_time: NonNull<CVTimeStamp>,
) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkTranslateTime(
display_link: &CVDisplayLink,
in_time: NonNull<CVTimeStamp>,
out_time: NonNull<CVTimeStamp>,
) -> CVReturn;
}
unsafe { CVDisplayLinkTranslateTime(self, in_time, out_time) }
}
}
extern "C-unwind" {
#[cfg(all(feature = "CVReturn", feature = "objc2-core-graphics"))]
#[deprecated = "renamed to `CVDisplayLink::create_with_cg_displays`"]
pub fn CVDisplayLinkCreateWithCGDisplays(
display_array: NonNull<CGDirectDisplayID>,
count: CFIndex,
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn;
}
extern "C-unwind" {
#[cfg(all(feature = "CVReturn", feature = "objc2-core-graphics"))]
#[deprecated = "renamed to `CVDisplayLink::create_with_open_gl_display_mask`"]
pub fn CVDisplayLinkCreateWithOpenGLDisplayMask(
mask: CGOpenGLDisplayMask,
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn;
}
extern "C-unwind" {
#[cfg(all(feature = "CVReturn", feature = "objc2-core-graphics"))]
#[deprecated = "renamed to `CVDisplayLink::create_with_cg_display`"]
pub fn CVDisplayLinkCreateWithCGDisplay(
display_id: CGDirectDisplayID,
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn;
}
extern "C-unwind" {
#[cfg(feature = "CVReturn")]
#[deprecated = "renamed to `CVDisplayLink::create_with_active_cg_displays`"]
pub fn CVDisplayLinkCreateWithActiveCGDisplays(
display_link_out: NonNull<*mut CVDisplayLink>,
) -> CVReturn;
}
#[cfg(all(feature = "CVReturn", feature = "objc2-core-graphics"))]
#[deprecated = "renamed to `CVDisplayLink::set_current_cg_display`"]
#[inline]
pub extern "C-unwind" fn CVDisplayLinkSetCurrentCGDisplay(
display_link: &CVDisplayLink,
display_id: CGDirectDisplayID,
) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkSetCurrentCGDisplay(
display_link: &CVDisplayLink,
display_id: CGDirectDisplayID,
) -> CVReturn;
}
unsafe { CVDisplayLinkSetCurrentCGDisplay(display_link, display_id) }
}
extern "C-unwind" {
#[cfg(all(feature = "CVReturn", feature = "objc2-open-gl"))]
#[cfg(target_os = "macos")]
#[deprecated = "renamed to `CVDisplayLink::set_current_cg_display_from_open_gl_context`"]
pub fn CVDisplayLinkSetCurrentCGDisplayFromOpenGLContext(
display_link: &CVDisplayLink,
cgl_context: CGLContextObj,
cgl_pixel_format: CGLPixelFormatObj,
) -> CVReturn;
}
#[cfg(feature = "objc2-core-graphics")]
#[deprecated = "renamed to `CVDisplayLink::current_cg_display`"]
#[inline]
pub extern "C-unwind" fn CVDisplayLinkGetCurrentCGDisplay(
display_link: &CVDisplayLink,
) -> CGDirectDisplayID {
extern "C-unwind" {
fn CVDisplayLinkGetCurrentCGDisplay(display_link: &CVDisplayLink) -> CGDirectDisplayID;
}
unsafe { CVDisplayLinkGetCurrentCGDisplay(display_link) }
}
extern "C-unwind" {
#[cfg(all(feature = "CVBase", feature = "CVReturn"))]
#[deprecated = "renamed to `CVDisplayLink::set_output_callback`"]
pub fn CVDisplayLinkSetOutputCallback(
display_link: &CVDisplayLink,
callback: CVDisplayLinkOutputCallback,
user_info: *mut c_void,
) -> CVReturn;
}
extern "C-unwind" {
#[cfg(all(feature = "CVBase", feature = "CVReturn", feature = "block2"))]
#[deprecated = "renamed to `CVDisplayLink::set_output_handler`"]
pub fn CVDisplayLinkSetOutputHandler(
display_link: &CVDisplayLink,
handler: CVDisplayLinkOutputHandler,
) -> CVReturn;
}
#[cfg(feature = "CVReturn")]
#[deprecated = "renamed to `CVDisplayLink::start`"]
#[inline]
pub extern "C-unwind" fn CVDisplayLinkStart(display_link: &CVDisplayLink) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkStart(display_link: &CVDisplayLink) -> CVReturn;
}
unsafe { CVDisplayLinkStart(display_link) }
}
#[cfg(feature = "CVReturn")]
#[deprecated = "renamed to `CVDisplayLink::stop`"]
#[inline]
pub extern "C-unwind" fn CVDisplayLinkStop(display_link: &CVDisplayLink) -> CVReturn {
extern "C-unwind" {
fn CVDisplayLinkStop(display_link: &CVDisplayLink) -> CVReturn;
}
unsafe { CVDisplayLinkStop(display_link) }
}
#[cfg(feature = "CVBase")]
#[deprecated = "renamed to `CVDisplayLink::nominal_output_video_refresh_period`"]
#[inline]
pub extern "C-unwind" fn CVDisplayLinkGetNominalOutputVideoRefreshPeriod(
display_link: &CVDisplayLink,
) -> CVTime {
extern "C-unwind" {
fn CVDisplayLinkGetNominalOutputVideoRefreshPeriod(display_link: &CVDisplayLink) -> CVTime;
}
unsafe { CVDisplayLinkGetNominalOutputVideoRefreshPeriod(display_link) }
}
#[cfg(feature = "CVBase")]
#[deprecated = "renamed to `CVDisplayLink::output_video_latency`"]
#[inline]
pub extern "C-unwind" fn CVDisplayLinkGetOutputVideoLatency(
display_link: &CVDisplayLink,
) -> CVTime {
extern "C-unwind" {
fn CVDisplayLinkGetOutputVideoLatency(display_link: &CVDisplayLink) -> CVTime;
}
unsafe { CVDisplayLinkGetOutputVideoLatency(display_link) }
}
#[deprecated = "renamed to `CVDisplayLink::actual_output_video_refresh_period`"]
#[inline]
pub extern "C-unwind" fn CVDisplayLinkGetActualOutputVideoRefreshPeriod(
display_link: &CVDisplayLink,
) -> c_double {
extern "C-unwind" {
fn CVDisplayLinkGetActualOutputVideoRefreshPeriod(display_link: &CVDisplayLink)
-> c_double;
}
unsafe { CVDisplayLinkGetActualOutputVideoRefreshPeriod(display_link) }
}
#[deprecated = "renamed to `CVDisplayLink::is_running`"]
#[inline]
pub extern "C-unwind" fn CVDisplayLinkIsRunning(display_link: &CVDisplayLink) -> bool {
extern "C-unwind" {
fn CVDisplayLinkIsRunning(display_link: &CVDisplayLink) -> Boolean;
}
let ret = unsafe { CVDisplayLinkIsRunning(display_link) };
ret != 0
}
extern "C-unwind" {
#[cfg(all(feature = "CVBase", feature = "CVReturn"))]
#[deprecated = "renamed to `CVDisplayLink::current_time`"]
pub fn CVDisplayLinkGetCurrentTime(
display_link: &CVDisplayLink,
out_time: NonNull<CVTimeStamp>,
) -> CVReturn;
}
extern "C-unwind" {
#[cfg(all(feature = "CVBase", feature = "CVReturn"))]
#[deprecated = "renamed to `CVDisplayLink::translate_time`"]
pub fn CVDisplayLinkTranslateTime(
display_link: &CVDisplayLink,
in_time: NonNull<CVTimeStamp>,
out_time: NonNull<CVTimeStamp>,
) -> CVReturn;
}