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>
|
#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;
|
||||||
|
|
|
@ -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)) {
|
||||||
|
|
Loading…
Reference in New Issue