mirror of
https://github.com/getpaseo/paseo.git
synced 2026-07-29 12:01:31 +00:00
fix(desktop): stop pinning macOS displays at max refresh rate (#1242)
The macOS compositor watchdog called webContents.setBackgroundThrottling(false) unconditionally for the window's whole lifetime. That disables Chromium's idle frame-rate throttling, so the GPU process's CADisplayLink never idles — pinning ProMotion panels at their maximum refresh rate (120Hz) continuously, even while the app is idle or occluded, which drains the battery. The call was never needed: the probe already skips non-producing windows via its screen-lock / isVisible / isMinimized / document.visibilityState guards, and the freeze it targets happens while the window is visible and focused, where background throttling never applies. Removing it lets the compositor idle and the display drop to a low adaptive rate when nothing animates; freeze detection is unaffected. A comment and a docs note keep it from being re-added. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -123,6 +123,12 @@ GPU process so Chromium rebuilds the display link. The probe is skipped while
|
||||
the screen is locked or the window is hidden or minimized, since a window
|
||||
legitimately stops producing frames then.
|
||||
|
||||
The watchdog deliberately leaves background throttling **enabled**. Calling
|
||||
`webContents.setBackgroundThrottling(false)` would keep the compositor producing
|
||||
frames non-stop, pinning ProMotion displays at 120Hz forever and draining the
|
||||
battery while the app is idle — so do not re-add it. The probe's visibility
|
||||
guards already prevent throttling from causing a false stall.
|
||||
|
||||
### Daemon logs
|
||||
|
||||
Check `$PASEO_HOME/daemon.log` for daemon logs. The default level is `info`; set
|
||||
|
||||
Reference in New Issue
Block a user