1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-06-08 04:09:15 -04:00

fix(DankBar): Resolve tray freeze and wallpaper loss after DPMS resume (#2457)

Fixes #2354

Root cause (tray freeze): In clickThrough mode, the PanelWindow mask uses
sectionRect() with mapToItem() to compute input regions. After DPMS resume,
the PanelWindow is recreated with width=0, and mapToItem() returns wrong
positions. The right section's implicitWidth doesn't change after creation
(fixed-size tray icons), so the mask binding is never re-evaluated when the
compositor sets the actual screen width. Adding barWindow.width as a binding
dependency ensures the mask recalculates on resize.

Root cause (wallpaper loss): Wallpaper PanelWindows are recreated by Variants
during screen reconnection before the compositor finishes output initialization.
The wallpaper Image renders at 0x0 dimensions, resulting in a black screen.

Changes:
- DankBarWindow: add barWindow.width dependency to clickThrough mask bindings
- DMSShell: add surface recovery mechanism (screen reconnect + session resume)
  with progressive 2-pass timer (800ms + 2800ms) that recreates bar, Frame,
  wallpaper, and dock surfaces after the compositor is ready
- WlrOutputService: re-request output state on session resume
This commit is contained in:
Feng Yu
2026-05-22 21:05:41 +08:00
committed by GitHub
parent 7476a220b5
commit 0b55fbcb15
3 changed files with 123 additions and 6 deletions
+9
View File
@@ -345,4 +345,13 @@ Singleton {
return 0;
}
}
Connections {
target: SessionService
function onSessionResumed() {
log.info("Session resumed, re-requesting output state, current outputs:", outputs.length);
requestState();
}
}
}