9fbfe18f9a
* drain autorelease pools in Window::open_* methods * fixes to NSView lifetime logic: - in open_parented and open_blocking, release NSView after adding it as a subview of the parent - in open_blocking, don't call autorelease on NSWindow. previously it was a no-op, but now that we are actually draining our autorelease pools, it ends up prematurely releasing the window. * fixes to NSView cleanup logic: - Move retainCount check to before calling [super release]. If [super release] happens first, then in the final call to release, [super release] deallocates the object and the call to retainCount results in a segfault. - Move objc_disposeClassPair to dealloc. Previously we were calling it when retainCount == 1, but that's exactly when dealloc is called, so this is cleaner. Also, we need to call objc_disposeClassPair after [super dealloc]. NOTE: The circular-reference-breaking logic in release is definitely broken. It's easy to thwart it by e.g. creating a wgpu surface at some point after build() or dropping one at some point before drop(). Need to come up with a better solution. |
||
---|---|---|
.. | ||
keyboard.rs | ||
mod.rs | ||
view.rs | ||
window.rs |