mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2025-02-24 00:37:43 +11:00
Remove core-video-sys dependency (#2326)
Hasn't been updated in over 2 years - many open PRs, seems abandoned. Is the cause of several duplicate dependencies in our dependency tree!
This commit is contained in:
parent
c532d910c0
commit
40abb526cc
3 changed files with 48 additions and 15 deletions
|
@ -67,11 +67,6 @@ core-foundation = "0.9"
|
||||||
core-graphics = "0.22"
|
core-graphics = "0.22"
|
||||||
dispatch = "0.2.0"
|
dispatch = "0.2.0"
|
||||||
|
|
||||||
[target.'cfg(target_os = "macos")'.dependencies.core-video-sys]
|
|
||||||
version = "0.1.4"
|
|
||||||
default_features = false
|
|
||||||
features = ["display_link"]
|
|
||||||
|
|
||||||
[target.'cfg(target_os = "windows")'.dependencies]
|
[target.'cfg(target_os = "windows")'.dependencies]
|
||||||
parking_lot = "0.12"
|
parking_lot = "0.12"
|
||||||
|
|
||||||
|
|
|
@ -221,3 +221,45 @@ extern "C" {
|
||||||
pub fn CGDisplayModeRetain(mode: CGDisplayModeRef);
|
pub fn CGDisplayModeRetain(mode: CGDisplayModeRef);
|
||||||
pub fn CGDisplayModeRelease(mode: CGDisplayModeRef);
|
pub fn CGDisplayModeRelease(mode: CGDisplayModeRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mod core_video {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[link(name = "CoreVideo", kind = "framework")]
|
||||||
|
extern "C" {}
|
||||||
|
|
||||||
|
// CVBase.h
|
||||||
|
|
||||||
|
pub type CVTimeFlags = i32; // int32_t
|
||||||
|
pub const kCVTimeIsIndefinite: CVTimeFlags = 1 << 0;
|
||||||
|
|
||||||
|
#[repr(C)]
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
pub struct CVTime {
|
||||||
|
pub time_value: i64, // int64_t
|
||||||
|
pub time_scale: i32, // int32_t
|
||||||
|
pub flags: i32, // int32_t
|
||||||
|
}
|
||||||
|
|
||||||
|
// CVReturn.h
|
||||||
|
|
||||||
|
pub type CVReturn = i32; // int32_t
|
||||||
|
pub const kCVReturnSuccess: CVReturn = 0;
|
||||||
|
|
||||||
|
// CVDisplayLink.h
|
||||||
|
|
||||||
|
pub type CVDisplayLinkRef = *mut c_void;
|
||||||
|
|
||||||
|
extern "C" {
|
||||||
|
pub fn CVDisplayLinkCreateWithCGDisplay(
|
||||||
|
displayID: CGDirectDisplayID,
|
||||||
|
displayLinkOut: *mut CVDisplayLinkRef,
|
||||||
|
) -> CVReturn;
|
||||||
|
pub fn CVDisplayLinkGetNominalOutputVideoRefreshPeriod(
|
||||||
|
displayLink: CVDisplayLinkRef,
|
||||||
|
) -> CVTime;
|
||||||
|
pub fn CVDisplayLinkRelease(displayLink: CVDisplayLinkRef);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub use core_video::*;
|
||||||
|
|
|
@ -16,10 +16,6 @@ use core_foundation::{
|
||||||
string::CFString,
|
string::CFString,
|
||||||
};
|
};
|
||||||
use core_graphics::display::{CGDirectDisplayID, CGDisplay, CGDisplayBounds};
|
use core_graphics::display::{CGDirectDisplayID, CGDisplay, CGDisplayBounds};
|
||||||
use core_video_sys::{
|
|
||||||
kCVReturnSuccess, kCVTimeIsIndefinite, CVDisplayLinkCreateWithCGDisplay,
|
|
||||||
CVDisplayLinkGetNominalOutputVideoRefreshPeriod, CVDisplayLinkRelease,
|
|
||||||
};
|
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub struct VideoMode {
|
pub struct VideoMode {
|
||||||
|
@ -228,16 +224,16 @@ impl MonitorHandle {
|
||||||
let cv_refresh_rate = unsafe {
|
let cv_refresh_rate = unsafe {
|
||||||
let mut display_link = std::ptr::null_mut();
|
let mut display_link = std::ptr::null_mut();
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
CVDisplayLinkCreateWithCGDisplay(self.0, &mut display_link),
|
ffi::CVDisplayLinkCreateWithCGDisplay(self.0, &mut display_link),
|
||||||
kCVReturnSuccess
|
ffi::kCVReturnSuccess
|
||||||
);
|
);
|
||||||
let time = CVDisplayLinkGetNominalOutputVideoRefreshPeriod(display_link);
|
let time = ffi::CVDisplayLinkGetNominalOutputVideoRefreshPeriod(display_link);
|
||||||
CVDisplayLinkRelease(display_link);
|
ffi::CVDisplayLinkRelease(display_link);
|
||||||
|
|
||||||
// This value is indefinite if an invalid display link was specified
|
// This value is indefinite if an invalid display link was specified
|
||||||
assert!(time.flags & kCVTimeIsIndefinite == 0);
|
assert!(time.flags & ffi::kCVTimeIsIndefinite == 0);
|
||||||
|
|
||||||
time.timeScale as i64 / time.timeValue
|
time.time_scale as i64 / time.time_value
|
||||||
};
|
};
|
||||||
|
|
||||||
let monitor = self.clone();
|
let monitor = self.clone();
|
||||||
|
|
Loading…
Add table
Reference in a new issue