render: on Wayland, make eglSwapBuffers non-blocking
This commit is contained in:
parent
f34b7f8800
commit
b42fc4f2b1
|
@ -17,6 +17,7 @@
|
|||
#include <wlr/render/dmabuf.h>
|
||||
|
||||
struct wlr_egl {
|
||||
EGLenum platform;
|
||||
EGLDisplay display;
|
||||
EGLConfig config;
|
||||
EGLContext context;
|
||||
|
|
|
@ -130,6 +130,8 @@ bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, void *remote_display,
|
|||
goto error;
|
||||
}
|
||||
|
||||
egl->platform = platform;
|
||||
|
||||
EGLint major, minor;
|
||||
if (eglInitialize(egl->display, &major, &minor) == EGL_FALSE) {
|
||||
wlr_log(WLR_ERROR, "Failed to initialize EGL");
|
||||
|
@ -319,6 +321,11 @@ bool wlr_egl_is_current(struct wlr_egl *egl) {
|
|||
|
||||
bool wlr_egl_swap_buffers(struct wlr_egl *egl, EGLSurface surface,
|
||||
pixman_region32_t *damage) {
|
||||
// Never block when swapping buffers on Wayland
|
||||
if (egl->platform == EGL_PLATFORM_WAYLAND_EXT) {
|
||||
eglSwapInterval(egl->display, 0);
|
||||
}
|
||||
|
||||
EGLBoolean ret;
|
||||
if (damage != NULL && (egl->exts.swap_buffers_with_damage_ext ||
|
||||
egl->exts.swap_buffers_with_damage_khr)) {
|
||||
|
|
Loading…
Reference in New Issue