diff options
Diffstat (limited to 'src/quick/items/qquickwindowmanager.cpp')
-rw-r--r-- | src/quick/items/qquickwindowmanager.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/quick/items/qquickwindowmanager.cpp b/src/quick/items/qquickwindowmanager.cpp index 43887662eb..6596343bc8 100644 --- a/src/quick/items/qquickwindowmanager.cpp +++ b/src/quick/items/qquickwindowmanager.cpp @@ -198,13 +198,14 @@ void QQuickTrivialWindowManager::windowDestroyed(QQuickWindow *window) void QQuickTrivialWindowManager::renderWindow(QQuickWindow *window) { - if (!window->isExposed() || !m_windows.contains(window)) + bool renderWithoutShowing = QQuickWindowPrivate::get(window)->renderWithoutShowing; + if ((!window->isExposed() && !renderWithoutShowing) || !m_windows.contains(window)) return; WindowData &data = const_cast<WindowData &>(m_windows[window]); QQuickWindow *masterWindow = 0; - if (!window->isVisible()) { + if (!window->isVisible() && !renderWithoutShowing) { // Find a "proper surface" to bind... for (QHash<QQuickWindow *, WindowData>::const_iterator it = m_windows.constBegin(); it != m_windows.constEnd() && !masterWindow; ++it) { @@ -218,6 +219,8 @@ void QQuickTrivialWindowManager::renderWindow(QQuickWindow *window) if (!masterWindow) return; + Q_ASSERT(QQuickWindowPrivate::get(masterWindow)->isRenderable()); + if (!gl) { gl = new QOpenGLContext(); gl->setFormat(masterWindow->requestedFormat()); |