diff --git a/eglonxbackend.cpp b/eglonxbackend.cpp index 480e533d19..63ef6e7200 100644 --- a/eglonxbackend.cpp +++ b/eglonxbackend.cpp @@ -89,6 +89,8 @@ EglOnXBackend::~EglOnXBackend() void EglOnXBackend::init() { + initEGL(); // required to toggle + initBufferAge(); // EGL_SWAP_BEHAVIOR_PRESERVED_BIT if (!initRenderingContext()) { setFailed(QStringLiteral("Could not initialize rendering context")); return; @@ -267,7 +269,7 @@ EGLSurface EglOnXBackend::createSurface(xcb_window_t window) bool EglOnXBackend::initBufferConfigs() { const EGLint config_attribs[] = { - EGL_SURFACE_TYPE, EGL_WINDOW_BIT|EGL_SWAP_BEHAVIOR_PRESERVED_BIT, + EGL_SURFACE_TYPE, EGL_WINDOW_BIT | (supportsBufferAge() ? 0 : EGL_SWAP_BEHAVIOR_PRESERVED_BIT), EGL_RED_SIZE, 1, EGL_GREEN_SIZE, 1, EGL_BLUE_SIZE, 1, diff --git a/libkwineffects/kwinglutils.cpp b/libkwineffects/kwinglutils.cpp index 950ba3d2b0..b643333dbb 100644 --- a/libkwineffects/kwinglutils.cpp +++ b/libkwineffects/kwinglutils.cpp @@ -96,6 +96,8 @@ void initGLX() void initEGL() { EGLDisplay dpy = eglGetCurrentDisplay(); + if (dpy == EGL_NO_DISPLAY) + dpy = eglGetDisplay(EGL_DEFAULT_DISPLAY); int major, minor; eglInitialize(dpy, &major, &minor); eglVersion = MAKE_GL_VERSION(major, minor, 0);