Try to weak-link ScreenCaptureKit always (#28585)
Closes #ISSUE Release Notes: - N/A *or* Added/Fixed/Improved ...
This commit is contained in:
parent
66b3e03baa
commit
c2e3134963
5 changed files with 8 additions and 12 deletions
|
@ -7,8 +7,6 @@ fn main() {
|
|||
|
||||
if cfg!(target_os = "macos") {
|
||||
println!("cargo:rustc-env=MACOSX_DEPLOYMENT_TARGET=10.15.7");
|
||||
// Weakly link ScreenCaptureKit to ensure can be used on macOS 10.15+.
|
||||
println!("cargo:rustc-link-arg=-Wl,-weak_framework,ScreenCaptureKit");
|
||||
}
|
||||
|
||||
// Populate git sha environment variable if git is available
|
||||
|
|
|
@ -77,8 +77,8 @@ mod macos {
|
|||
|
||||
fn generate_dispatch_bindings() {
|
||||
println!("cargo:rustc-link-lib=framework=System");
|
||||
println!("cargo:rustc-link-lib=framework=ScreenCaptureKit");
|
||||
println!("cargo:rerun-if-changed=src/platform/mac/dispatch.h");
|
||||
// weak link to support Catalina
|
||||
println!("cargo:rustc-link-arg=-Wl,-weak_framework,ScreenCaptureKit");
|
||||
|
||||
let bindings = bindgen::Builder::default()
|
||||
.header("src/platform/mac/dispatch.h")
|
||||
|
|
|
@ -2,7 +2,7 @@ use super::{
|
|||
BoolExt,
|
||||
attributed_string::{NSAttributedString, NSMutableAttributedString},
|
||||
events::key_to_native,
|
||||
renderer, screen_capture,
|
||||
is_macos_version_at_least, renderer, screen_capture,
|
||||
};
|
||||
use crate::{
|
||||
Action, AnyWindowHandle, BackgroundExecutor, ClipboardEntry, ClipboardItem, ClipboardString,
|
||||
|
@ -22,8 +22,8 @@ use cocoa::{
|
|||
},
|
||||
base::{BOOL, NO, YES, id, nil, selector},
|
||||
foundation::{
|
||||
NSArray, NSAutoreleasePool, NSBundle, NSData, NSInteger, NSProcessInfo, NSRange, NSString,
|
||||
NSUInteger, NSURL,
|
||||
NSArray, NSAutoreleasePool, NSBundle, NSData, NSInteger, NSOperatingSystemVersion,
|
||||
NSProcessInfo, NSRange, NSString, NSUInteger, NSURL,
|
||||
},
|
||||
};
|
||||
use core_foundation::{
|
||||
|
@ -553,7 +553,8 @@ impl Platform for MacPlatform {
|
|||
}
|
||||
|
||||
fn is_screen_capture_supported(&self) -> bool {
|
||||
true
|
||||
let min_version = NSOperatingSystemVersion::new(12, 3, 0);
|
||||
is_macos_version_at_least(min_version)
|
||||
}
|
||||
|
||||
fn screen_capture_sources(
|
||||
|
|
|
@ -37,9 +37,6 @@ pub struct MacScreenCaptureStream {
|
|||
sc_stream_output: id,
|
||||
}
|
||||
|
||||
#[link(name = "ScreenCaptureKit", kind = "framework")]
|
||||
unsafe extern "C" {}
|
||||
|
||||
static mut DELEGATE_CLASS: *const Class = ptr::null();
|
||||
static mut OUTPUT_CLASS: *const Class = ptr::null();
|
||||
const FRAME_CALLBACK_IVAR: &str = "frame_callback";
|
||||
|
|
|
@ -1568,7 +1568,7 @@ extern "C" fn window_will_exit_fullscreen(this: &Object, _: Sel, _: id) {
|
|||
}
|
||||
}
|
||||
|
||||
fn is_macos_version_at_least(version: NSOperatingSystemVersion) -> bool {
|
||||
pub(crate) fn is_macos_version_at_least(version: NSOperatingSystemVersion) -> bool {
|
||||
unsafe { NSProcessInfo::processInfo(nil).isOperatingSystemAtLeastVersion(version) }
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue