mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-05 02:20:10 +00:00
macOS: Drop input handler to avoid editor/project not being dropped (#18898)
This fixes the problem of a `Project` sometimes not being dropped when closing the single, last window of Zed. Turns out, it wasn't get dropped for the following reason: 1. `editor::Editor` held a reference to project 2. The macOS `input_handler` on the `Window` held a reference to that `Editor` 3. The AppKit window (and its input handler) get dropped asynchronously (in the code in this diff), after the window is closed. 4. After the window is closed and no `cx.update()` calls are made anymore, `flush_effects` is not called anymore. 5. But `flush_effects` is where we dropped entities that don't have any more references. In short: we dropped `Editor`, which held a reference to `Project`, out of band, `flush_effects` wasn't called anymore, and thus the `Project` wasn't dropped. cc @ConradIrwin @bennetbo since we talked about this. Release Notes: - N/A Co-authored-by: Antonio <antonio@zed.dev>
This commit is contained in:
parent
5d5c4b6677
commit
9c54bd1bd4
1 changed files with 1 additions and 0 deletions
|
@ -768,6 +768,7 @@ impl Drop for MacWindow {
|
||||||
unsafe {
|
unsafe {
|
||||||
this.native_window.setDelegate_(nil);
|
this.native_window.setDelegate_(nil);
|
||||||
}
|
}
|
||||||
|
this.input_handler.take();
|
||||||
this.executor
|
this.executor
|
||||||
.spawn(async move {
|
.spawn(async move {
|
||||||
unsafe {
|
unsafe {
|
||||||
|
|
Loading…
Reference in a new issue