Details
-
Bug
-
Resolution: Out of scope
-
P2: Important
-
None
-
5.12.9, 5.13.2
-
Weston, ivi-shell
Description
- QQuickWindow::show() (with ivi-shell)
- QQuickWindow::hide()
- QWaylandWindow::setVisible(false)
- QWaylandWindow::reset(true)
- mShellSurface is deleted.
- QQuickWindow::hideEvent()
~~~ - main thread is blocked in QSGThreadedRenderLoop::releaseResources(.
- QSGThreadedRenderLoop::invalidateOpenGL on Render thread
- QWaylandGLContext::makeCurrent on Render thread
- QWaylandWindow::createDecoration on Render thread
- mShellSurface is null at this point, so Decoration plugin(libbradient.so) is loaded.
However, Decoration is not required in ivi-shell. Therefore, QWaylandWindow should store decoration policy of own's shell surface and it should be used in QWaylandWindow::createDecoration()
bool QWaylandWindow::createDecoration() { if (!mDisplay->supportsWindowDecoration()) return false; static bool decorationPluginFailed = false; bool decoration = false; switch (window()->type()) { case Qt::Window: case Qt::Widget: case Qt::Dialog: case Qt::Tool: case Qt::Drawer: decoration = true; break; default: break; } if (mFlags & Qt::FramelessWindowHint) decoration = false; if (mFlags & Qt::BypassWindowManagerHint) decoration = false; if (mSubSurfaceWindow) decoration = false; // when QQuickWindow's hide() is called, mShellSurface is null if (mShellSurface && !mShellSurface->wantsDecorations()) decoration = false;
Attachments
Issue Links
- relates to
-
QTBUG-88571 Multiple hides on threaded render loop when window is hidden
- Open