You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The app pinned a full CPU core (~12% of an 8-core machine) for the entire time
it sat hidden in the system tray. Idle usage is now 0%.
Cause
Hiding to the tray used ShowWindow(SW_HIDE), which clears WS_VISIBLE.
Windows does not deliver WM_PAINT to an invisible window, so winit's request_redraw produced nothing and eframe was left holding its event loop
in ControlFlow::Poll, waiting for a RedrawRequested that could never
arrive. Upstream issue: emilk/egui#3982.
The window is now minimised with the WS_EX_TOOLWINDOW style instead. It
stays out of the taskbar and Alt+Tab, but keeps WS_VISIBLE, so repaints are
still serviced and the event loop parks in ControlFlow::Wait between them.
Changed
Removed the internal workaround that had to poke a hidden window from another
thread before it could act on the tray icon, the global hotkey or a second
launch. A window that can still paint handles those directly.
The window handle is taken from eframe rather than found
window title.
The start-at-login path (--background) re-applies the
frames, because winit rewrites the extended window style while eframe applies
the state the window was built with.
Measured
State
2.9.1
3.0.0
Hidden in tray, idle
100% of a core
0%
Window shown, idle
0%
0-2%
Start-at-login, idle
1%
0%
Platforms
Windows only. Linux and macOS were never affected: X11 a
redraw requests inside winit instead of going through the display server, and
both already minimised rather than hiding.
Upgrading
Drop-in replacement. No data, settings or shortcut chang