diff options
-rw-r--r-- | src/client/qwaylandshmbackingstore.cpp | 1 | ||||
-rw-r--r-- | src/client/qwaylandwindow.cpp | 8 | ||||
-rw-r--r-- | src/hardwareintegration/client/wayland-egl/qwaylandglcontext.cpp | 2 |
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 b34e448b6..672ddc5b1 100644 --- a/src/client/qwaylandwindow.cpp +++ b/src/client/qwaylandwindow.cpp @@ -1041,6 +1041,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; @@ -1121,11 +1123,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); |