qt5-qtwayland/qtwayland-do-not-recreate-hidden-egl-surfaces.patch
2018-01-10 08:44:15 +01:00

39 lines
1.6 KiB
Diff

From a343c589a966d0342fcc75e0d6ce24e1f5157540 Mon Sep 17 00:00:00 2001
From: David Edmundson <davidedmundson@kde.org>
Date: Wed, 3 Jan 2018 19:18:42 +0000
Subject: [PATCH] Don't recreate hidden egl surfaces
QWaylandEglWindow deletes surfaces when a window changes from hidden to
visible, presumably as a result of us not having a valid wl_surface
object. By extension it doesn't make sense to create a surface whilst a
window is still hidden.
This fixes a crash where a QQuickWindow hides and then is destroyed. In
QQuickWindow destruction we have to create a valid context in order to
delete any textures/assets owned by the scene graph; as the wl_surface
has gone this causes an error in the EGL libs when we create an EGL
surface.
Task-number: QTBUG-65553
Change-Id: I9b37a86326bf2cd7737c4e839c1aa8c74cf08116
---
.../client/wayland-egl/qwaylandglcontext.cpp | 2 +-
tests/auto/client/client/tst_client.cpp | 35 ++++++++++++++++++++++
2 files changed, 36 insertions(+), 1 deletion(-)
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
index 2a9e39e..f4dd6f4 100644
--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
@@ -407,7 +407,7 @@ bool QWaylandGLContext::makeCurrent(QPlatformSurface *surface)
window->createDecoration();
if (eglSurface == EGL_NO_SURFACE) {
- window->updateSurface(true);
+ window->updateSurface(window->isExposed());
eglSurface = window->eglSurface();
}
--
2.7.4