render: on Wayland, make eglSwapBuffers non-blocking

This commit is contained in:
emersion 2018-10-28 09:49:30 +01:00
parent f34b7f8800
commit b42fc4f2b1
No known key found for this signature in database
GPG Key ID: 0FDE7BE0E88F5E48
2 changed files with 8 additions and 0 deletions

View File

@ -17,6 +17,7 @@
#include <wlr/render/dmabuf.h> #include <wlr/render/dmabuf.h>
struct wlr_egl { struct wlr_egl {
EGLenum platform;
EGLDisplay display; EGLDisplay display;
EGLConfig config; EGLConfig config;
EGLContext context; EGLContext context;

View File

@ -130,6 +130,8 @@ bool wlr_egl_init(struct wlr_egl *egl, EGLenum platform, void *remote_display,
goto error; goto error;
} }
egl->platform = platform;
EGLint major, minor; EGLint major, minor;
if (eglInitialize(egl->display, &major, &minor) == EGL_FALSE) { if (eglInitialize(egl->display, &major, &minor) == EGL_FALSE) {
wlr_log(WLR_ERROR, "Failed to initialize EGL"); 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, bool wlr_egl_swap_buffers(struct wlr_egl *egl, EGLSurface surface,
pixman_region32_t *damage) { pixman_region32_t *damage) {
// Never block when swapping buffers on Wayland
if (egl->platform == EGL_PLATFORM_WAYLAND_EXT) {
eglSwapInterval(egl->display, 0);
}
EGLBoolean ret; EGLBoolean ret;
if (damage != NULL && (egl->exts.swap_buffers_with_damage_ext || if (damage != NULL && (egl->exts.swap_buffers_with_damage_ext ||
egl->exts.swap_buffers_with_damage_khr)) { egl->exts.swap_buffers_with_damage_khr)) {