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:
Mads Marquart 2022-06-11 02:37:46 +02:00 committed by GitHub
parent c532d910c0
commit 40abb526cc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 48 additions and 15 deletions

View file

@ -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"

View file

@ -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::*;

View file

@ -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();