Commit fdccc30
j4kuuu
output: create session lock surface before mode commit
When an output appears during resume with an active session lock, Hyprland
registers the wl_output global at size {0, 0} while the DRM session is
still inactive. The size guard in createSessionLockSurface() rejected that
state, leaving m_sessionLockSurface null. When the session activated,
modeChanged fired and wl_output.done arrived with a valid mode. The setDone
handler created the surface but then had to go through get_lock_surface and
wait for Hyprland to respond with configure before rendering, so the lockdead
fallback texture stayed visible for that extra exchange.
Remove the size guard and handle size {0, 0} in configure() instead:
ack the serial first, then return early if the size is not positive. This
avoids a wp_viewport.set_destination(0, 0) protocol error and allows
Hyprland's monitorMode listener on SSessionLockSurface to fire
sendConfigure() directly on modeChanged without waiting for another
get_lock_surface request.1 parent 274154f commit fdccc30
2 files changed
Lines changed: 10 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
66 | 66 | | |
67 | 67 | | |
68 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
69 | 78 | | |
70 | 79 | | |
71 | 80 | | |
| |||
75 | 84 | | |
76 | 85 | | |
77 | 86 | | |
78 | | - | |
79 | | - | |
80 | | - | |
81 | 87 | | |
82 | 88 | | |
83 | 89 | | |
| |||
92 | 98 | | |
93 | 99 | | |
94 | 100 | | |
95 | | - | |
| 101 | + | |
96 | 102 | | |
97 | 103 | | |
98 | 104 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
56 | 56 | | |
57 | 57 | | |
58 | 58 | | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | 59 | | |
65 | 60 | | |
66 | 61 | | |
| |||
0 commit comments