summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/client/qwaylandshmbackingstore.cpp1
-rw-r--r--src/client/qwaylandwindow.cpp8
-rw-r--r--src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp2
3 files changed, 3 insertions, 8 deletions
diff --git a/src/client/qwaylandshmbackingstore.cpp b/src/client/qwaylandshmbackingstore.cpp
index 02d830ad8..83add5945 100644
--- a/src/client/qwaylandshmbackingstore.cpp
+++ b/src/client/qwaylandshmbackingstore.cpp
@@ -190,7 +190,6 @@ void QWaylandShmBackingStore::endPaint()
void QWaylandShmBackingStore::ensureSize()
{
waylandWindow()->setBackingStore(this);
- waylandWindow()->createDecoration();
resize(mRequestedSize);
}
diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
index f32a487e6..1fb5c3f83 100644
--- a/src/client/qwaylandwindow.cpp
+++ b/src/client/qwaylandwindow.cpp
@@ -1031,6 +1031,8 @@ void QWaylandWindow::setWindowFlags(Qt::WindowFlags flags)
bool QWaylandWindow::createDecoration()
{
+ Q_ASSERT_X(QThread::currentThreadId() == QThreadData::get2(thread())->threadId.loadRelaxed(),
+ "QWaylandWindow::createDecoration", "not called from main thread");
if (!mDisplay->supportsWindowDecoration())
return false;
@@ -1111,11 +1113,7 @@ bool QWaylandWindow::createDecoration()
// size and are not redrawn, leaving the new buffer empty. As a simple
// work-around, we trigger a full extra update whenever the client-side
// window decorations are toggled while the window is showing.
- // Note: createDecoration() is sometimes called from the render thread
- // of Qt Quick. This is essentially wrong and could potentially cause problems,
- // but until the underlying issue has been fixed, we have to use invokeMethod()
- // here to avoid asserts.
- QMetaObject::invokeMethod(window(), &QWindow::requestUpdate);
+ window()->requestUpdate();
}
return mWindowDecoration;
diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
index 039ec1a6a..685ad1e4d 100644
--- a/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
+++ b/src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp
@@ -313,8 +313,6 @@ bool QWaylandGLContext::makeCurrent(QPlatformSurface *surface)
if (m_currentWindow->isExposed())
m_currentWindow->setCanResize(false);
- if (m_decorationsContext != EGL_NO_CONTEXT && !m_currentWindow->decoration())
- m_currentWindow->createDecoration();
if (eglSurface == EGL_NO_SURFACE) {
m_currentWindow->updateSurface(true);