aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/qquickwindowmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/quick/items/qquickwindowmanager.cpp')
-rw-r--r--src/quick/items/qquickwindowmanager.cpp7
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());