Change summary
crates/call/src/call.rs | 1
crates/live_kit_client/LiveKitBridge/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(+)
Detailed changes
@@ -14,6 +14,7 @@ pub use room::Room;
use std::sync::Arc;
pub fn init(client: Arc<Client>, user_store: ModelHandle<UserStore>, 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);
}
@@ -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")
+ }
+}
@@ -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);
}
@@ -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 {
@@ -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<HashMap<String, Arc<TestServer>>> = Default::default();
}