diff --git a/Cargo.toml b/Cargo.toml index f71391f..bc1d4d2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -17,11 +17,15 @@ objc = "0.2.5" core-foundation-sys = "0.6.2" metal = { version = "0.14.0", features = ["private"] } +[dependencies.core-graphics] +version = "0.17.3" +optional = true + [features] default = [ "display_link", ] all = [ "display_link", "direct3d", "io_suface", "opengl" ] -display_link = [ "opengl", ] +display_link = [ "opengl", "core-graphics" ] direct3d = [ ] io_suface = [ ] opengl = [ ] diff --git a/src/display_link.rs b/src/display_link.rs index d40b3cf..b40011c 100644 --- a/src/display_link.rs +++ b/src/display_link.rs @@ -1,5 +1,16 @@ -use crate::core_foundation_sys::base::CFTypeID; +use crate::{ + core_foundation_sys::base::CFTypeID, + core_graphics::display::CGDirectDisplayID, + CVReturn, CVTime, +}; + +#[derive(Debug, Copy, Clone)] +pub enum __CVDisplayLink { } +pub type CVDisplayLinkRef = *mut __CVDisplayLink; extern "C" { pub fn CVDisplayLinkGetTypeID() -> CFTypeID; -} \ No newline at end of file + pub fn CVDisplayLinkCreateWithCGDisplay(displayID: CGDirectDisplayID, displayLinkOut: *mut CVDisplayLinkRef) -> CVReturn; + pub fn CVDisplayLinkGetNominalOutputVideoRefreshPeriod(displayLink: CVDisplayLinkRef) -> CVTime; + pub fn CVDisplayLinkRelease(displayLink: CVDisplayLinkRef); +} diff --git a/src/lib.rs b/src/lib.rs index 0e1f9ff..fa77155 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -43,6 +43,8 @@ pub use self::metal_texture_cache::*; cfg_if! { if #[cfg(feature = "display_link")] { + extern crate core_graphics; + pub mod host_time; pub mod display_link;