mirror of
https://github.com/zed-industries/zed.git
synced 2024-12-28 20:01:33 +00:00
gpui: Fix performance of app menu opening with large # of windows (#16939)
This is officially my weirdest performance fix to date; With large # of windows opening app menu could take a lot of time (we're talking few seconds with 9 windows, a minute with 10 windows). The fix is to make one method pub(crate).. What? <img width="981" alt="image" src="https://github.com/user-attachments/assets/83b26154-0acd-43ef-84b3-4b85cde36120"> We were spending most of the time on clear_pending_keystrokes, which - funnily enough - called itself recursively. It turned out we have two methods; `AppContext::clear_pending_keystrokes` and WindowContext::clear_pending_keystrokes. The former calls the latter, but - due to the fact that `WindowContext::clear_pending_keystrokes` is private and `WindowContext` derefs to `AppContext` - `AppContext` one ended up actually calling itself! The fix is plain and simple - marking WindowContext one as pub(crate), so that it gets picked up as a method to call over `AppContext::clear_pending_keystrokes`. Closes #16895 Release Notes: - Fixed app menu performance slowdowns when there are multiple windows open.
This commit is contained in:
parent
8ec680cecb
commit
226ec9d404
1 changed files with 1 additions and 1 deletions
|
@ -3389,7 +3389,7 @@ impl<'a> WindowContext<'a> {
|
|||
self.window.pending_input.is_some()
|
||||
}
|
||||
|
||||
fn clear_pending_keystrokes(&mut self) {
|
||||
pub(crate) fn clear_pending_keystrokes(&mut self) {
|
||||
self.window.pending_input.take();
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue