mirror of
https://github.com/hyprwm/hyprlock.git
synced 2026-05-22 20:58:08 +02:00
core: disable EGL vsync throttling on new surfaces
With the default swap interval of 1, eglSwapBuffers blocks until the compositor sends wl_buffer.release. When a monitor is DPMS-off, the compositor never releases the buffer, stalling the main thread indefinitely. This prevents authentication from completing and leaves the lock screen frozen. Set the swap interval to 0 on each new EGL surface so swaps are non-blocking. Frame pacing is already controlled by wl_surface.frame callbacks, so this does not cause unbounded rendering. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
37f615cff7
commit
9b5bf2d1e5
1 changed files with 7 additions and 0 deletions
|
|
@ -105,6 +105,13 @@ void CSessionLockSurface::configure(const Vector2D& size_, uint32_t serial_) {
|
|||
readyForFrame = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// Disable vsync throttling so eglSwapBuffers never blocks waiting for
|
||||
// wl_buffer.release. Without this, a DPMS-off monitor can stall the main
|
||||
// thread indefinitely because the compositor never releases the buffer.
|
||||
// Rendering rate is already governed by wl_surface.frame callbacks.
|
||||
g_pEGL->makeCurrent(eglSurface);
|
||||
eglSwapInterval(g_pEGL->eglDisplay, 0);
|
||||
}
|
||||
|
||||
if (readyForFrame && !(SAMESIZE && SAMESCALE)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue