review pass 4
This commit is contained in:
@@ -201,12 +201,13 @@ impl Drop for ObjcStrong {
|
||||
}
|
||||
|
||||
struct NativeWindow {
|
||||
window: ObjcStrong,
|
||||
#[allow(dead_code)]
|
||||
view: *mut AnyObject,
|
||||
delegate: Option<ObjcStrong>,
|
||||
_metal_layer: Retained<CAMetalLayer>,
|
||||
// Renderer/surface must drop before the AppKit objects whose raw handles it
|
||||
// was created from.
|
||||
renderer: Option<WgpuSceneRenderer>,
|
||||
_metal_layer: Retained<CAMetalLayer>,
|
||||
view: ObjcStrong,
|
||||
delegate: Option<ObjcStrong>,
|
||||
window: ObjcStrong,
|
||||
}
|
||||
|
||||
impl NativeWindow {
|
||||
@@ -219,7 +220,7 @@ impl NativeWindow {
|
||||
}
|
||||
|
||||
fn view_object(&self) -> *mut AnyObject {
|
||||
self.view
|
||||
self.view.as_ptr()
|
||||
}
|
||||
|
||||
fn set_title(&self, title: &str) {
|
||||
@@ -256,12 +257,12 @@ impl NativeWindow {
|
||||
}
|
||||
|
||||
fn in_live_resize(&self) -> bool {
|
||||
unsafe { objc2::msg_send![self.view, inLiveResize] }
|
||||
unsafe { objc2::msg_send![self.view_object(), inLiveResize] }
|
||||
}
|
||||
|
||||
fn display_if_needed(&self) {
|
||||
unsafe {
|
||||
let _: () = objc2::msg_send![self.view, displayIfNeeded];
|
||||
let _: () = objc2::msg_send![self.view_object(), displayIfNeeded];
|
||||
let _: () = objc2::msg_send![self.window_object(), displayIfNeeded];
|
||||
}
|
||||
}
|
||||
@@ -1172,10 +1173,10 @@ fn drain_platform_commands(state: &Rc<RefCell<MacosState>>) -> bool {
|
||||
unsafe {
|
||||
let _: () = objc2::msg_send![app, stop: std::ptr::null_mut::<AnyObject>()];
|
||||
}
|
||||
set_command_wake_hook(None);
|
||||
if let Ok(mut slot) = run_loop_wake_handle().lock() {
|
||||
*slot = None;
|
||||
}
|
||||
set_command_wake_hook(None);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1588,7 +1589,7 @@ fn create_native_window(window: &MacosWindow, app: *mut AnyObject) -> Option<Nat
|
||||
let view_class = content_view_class();
|
||||
let view_obj: *mut AnyObject = unsafe { objc2::msg_send![view_class, alloc] };
|
||||
let view_obj: *mut AnyObject = unsafe { objc2::msg_send![view_obj, initWithFrame: rect] };
|
||||
let mut view_owner = unsafe { ObjcStrong::from_owned(view_obj) }?;
|
||||
let view_owner = unsafe { ObjcStrong::from_owned(view_obj) }?;
|
||||
let view_obj = view_owner.as_ptr();
|
||||
let delegate_class = window_delegate_class();
|
||||
let delegate_obj: *mut AnyObject = unsafe { objc2::msg_send![delegate_class, new] };
|
||||
@@ -1609,10 +1610,6 @@ fn create_native_window(window: &MacosWindow, app: *mut AnyObject) -> Option<Nat
|
||||
objc2::msg_send![window_obj, makeKeyAndOrderFront: std::ptr::null_mut::<AnyObject>()];
|
||||
let _: () = objc2::msg_send![app, activateIgnoringOtherApps: true];
|
||||
}
|
||||
// NSWindow retains its content view. Drop our construction-time ownership so
|
||||
// the window is the single owner from here.
|
||||
view_owner.release_now();
|
||||
|
||||
let metal_layer = configure_metal_surface_layer(view_obj)?;
|
||||
|
||||
let scale_factor: f64 = unsafe { objc2::msg_send![window_obj, backingScaleFactor] };
|
||||
@@ -1630,11 +1627,11 @@ fn create_native_window(window: &MacosWindow, app: *mut AnyObject) -> Option<Nat
|
||||
}
|
||||
|
||||
Some(NativeWindow {
|
||||
window: window_owner,
|
||||
view: view_obj,
|
||||
delegate: Some(delegate_owner),
|
||||
_metal_layer: metal_layer,
|
||||
renderer,
|
||||
_metal_layer: metal_layer,
|
||||
view: view_owner,
|
||||
delegate: Some(delegate_owner),
|
||||
window: window_owner,
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user