From db8b8ef66bd2cb62c180dbd485637e42b5274101 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Thu, 20 Oct 2022 20:17:54 +0200 Subject: [PATCH] WIP --- crates/call/src/call.rs | 1 + .../Sources/LiveKitBridge/LiveKitBridge.swift | 17 +++++++++++++++++ crates/live_kit_client/build.rs | 1 + crates/live_kit_client/src/prod.rs | 7 +++++++ crates/live_kit_client/src/test.rs | 4 ++++ 5 files changed, 30 insertions(+) diff --git a/crates/call/src/call.rs b/crates/call/src/call.rs index 6b06d04375b8a1fca563ef3be558f823ce45cd1c..11532599326fdd8581f69530e4482c20cd3bc674 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 716d96644c3fcb0af4373081373279dc78754bcc..9a21b178002733c4cf1f620d1e1f681ea3a42038 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 4bbd61ac109749429340ef713ed31941c4121e2d..6c5704b9dbb1f11748d03d8a37b1b9a1cdc4e4d5 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 35a5705a24d47e6e4975aac3b52cfc5e0fc29441..a0879f016a2f6a8a8d021fb533f24795407b1522 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 23076e13a5cd6629abbdc6939a8d2c76000bb32a..e68bff1bf9c9bac5cfceae5d016ef7c2c57f7ba3 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(); }