diff --git a/crates/call/src/call.rs b/crates/call/src/call.rs index 6b06d04375..1153259932 100644 --- a/crates/call/src/call.rs +++ b/crates/call/src/call.rs @@ -14,6 +14,7 @@ pub use room::Room; use std::sync::Arc; pub fn init(client: Arc, user_store: ModelHandle, cx: &mut MutableAppContext) { + live_kit_client::displays(); let active_call = cx.add_model(|cx| ActiveCall::new(client, user_store, cx)); cx.set_global(active_call); } diff --git a/crates/live_kit_client/LiveKitBridge/Sources/LiveKitBridge/LiveKitBridge.swift b/crates/live_kit_client/LiveKitBridge/Sources/LiveKitBridge/LiveKitBridge.swift index 716d96644c..9a21b17800 100644 --- a/crates/live_kit_client/LiveKitBridge/Sources/LiveKitBridge/LiveKitBridge.swift +++ b/crates/live_kit_client/LiveKitBridge/Sources/LiveKitBridge/LiveKitBridge.swift @@ -1,6 +1,7 @@ import Foundation import LiveKit import WebRTC +import ScreenCaptureKit class LKRoomDelegate: RoomDelegate { var data: UnsafeRawPointer @@ -154,3 +155,19 @@ public func LKDisplaySources(data: UnsafeRawPointer, callback: @escaping @conven callback(data, nil, error.localizedDescription as CFString) } } + +@_cdecl("LKDisplays") +public func LKDisplays() { + if #available(macOS 12.3, *) { + Task.init { + let content = try await SCShareableContent.current + print(content.displays.count) + } + +// SCShareableContent.getWithCompletionHandler { content, error in +// print(content!.displays.count) +// } + } else { + print("OOOPS") + } +} diff --git a/crates/live_kit_client/build.rs b/crates/live_kit_client/build.rs index 4bbd61ac10..6c5704b9db 100644 --- a/crates/live_kit_client/build.rs +++ b/crates/live_kit_client/build.rs @@ -81,6 +81,7 @@ fn build_bridge(swift_target: &SwiftTarget) { } fn link_swift_stdlib(swift_target: &SwiftTarget) { + panic!("{:?}", swift_target.paths.runtime_library_paths); for path in &swift_target.paths.runtime_library_paths { println!("cargo:rustc-link-search=native={}", path); } diff --git a/crates/live_kit_client/src/prod.rs b/crates/live_kit_client/src/prod.rs index 35a5705a24..a0879f016a 100644 --- a/crates/live_kit_client/src/prod.rs +++ b/crates/live_kit_client/src/prod.rs @@ -62,6 +62,7 @@ extern "C" { fn LKVideoTrackAddRenderer(track: *const c_void, renderer: *const c_void); fn LKRemoteVideoTrackGetSid(track: *const c_void) -> CFStringRef; + fn LKDisplays(); fn LKDisplaySources( callback_data: *mut c_void, callback: extern "C" fn( @@ -73,6 +74,12 @@ extern "C" { fn LKCreateScreenShareTrackForDisplay(display: *const c_void) -> *const c_void; } +pub fn displays() { + unsafe { + LKDisplays(); + } +} + pub type Sid = String; pub struct Room { diff --git a/crates/live_kit_client/src/test.rs b/crates/live_kit_client/src/test.rs index 23076e13a5..e68bff1bf9 100644 --- a/crates/live_kit_client/src/test.rs +++ b/crates/live_kit_client/src/test.rs @@ -9,6 +9,10 @@ use media::core_video::CVImageBuffer; use parking_lot::Mutex; use std::{future::Future, sync::Arc}; +pub fn displays() { + panic!() +} + lazy_static! { static ref SERVERS: Mutex>> = Default::default(); }