Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

macOS: Drop input handler to avoid editor/project not being dropped #18898

Merged
merged 1 commit into from
Oct 9, 2024

Commits on Oct 9, 2024

  1. macOS: Drop input handler to avoid editor/project not being dropped

    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.
    
    Co-authored-by: Antonio <antonio@zed.dev>
    mrnugget and as-cii committed Oct 9, 2024
    Configuration menu
    Copy the full SHA
    4622915 View commit details
    Browse the repository at this point in the history