Prevent duplicate terminal wake recovery on overlapping window events

When window focus and visibility events fire concurrently, they can trigger multiple redundant wake recovery passes.

- Return early if a wake recovery frame is already scheduled.
- Keep the scheduled animation frame instead of canceling it to ensure we get a settled recovery pass.
This commit is contained in:
Jinjing
2026-06-28 14:55:41 -07:00
parent c0b3a12af9
commit 09bf08aa2a
@@ -29,6 +29,10 @@ export function useTerminalWindowWakeRecovery({
wakeRecoveryFrameId = null
}
const recoverVisibleWake = (): void => {
// Focus and visibility often fire together; keep one immediate recovery and one settled RAF pass.
if (wakeRecoveryFrameId !== null) {
return
}
const manager = managerRef.current
if (!manager) {
return
@@ -37,7 +41,6 @@ export function useTerminalWindowWakeRecovery({
manager,
isActive: isActiveRef.current
})
cancelScheduledWakeRecovery()
if (typeof requestAnimationFrame !== 'function') {
return
}