From e0521a579e967d670a5f6d7d4a4cd90a6aa56e17 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@digia.com>
Date: Thu, 4 Oct 2012 12:15:49 +0200
Subject: [PATCH] Change Q_ASSERTs in qquick[threaded]windowmanager.cpp to
 qWarning().

As they also triggers when a non-existing file is loaded into QML2
or windows have invalid sizes.

Change-Id: Iab1ce6c99f2bc2cb360ddaccce539cb97979ad5a
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
---
 .../items/qquickthreadedwindowmanager.cpp     | 25 +++++++++++--------
 src/quick/items/qquickwindowmanager.cpp       |  8 +++++-
 2 files changed, 22 insertions(+), 11 deletions(-)

diff --git a/src/quick/items/qquickthreadedwindowmanager.cpp b/src/quick/items/qquickthreadedwindowmanager.cpp
index 50bd569496..fac4fb034f 100644
--- a/src/quick/items/qquickthreadedwindowmanager.cpp
+++ b/src/quick/items/qquickthreadedwindowmanager.cpp
@@ -43,6 +43,7 @@
 #include "qquickthreadedwindowmanager_p.h"
 
 #include <QtCore/QTime>
+#include <QtCore/QDebug>
 
 #include <QtGui/QOpenGLContext>
 #include <QtGui/private/qguiapplication_p.h>
@@ -396,20 +397,24 @@ void QQuickRenderThreadSingleContextWindowManager::run()
             WindowData *windowData = it.value();
             QQuickWindowPrivate *windowPrivate = QQuickWindowPrivate::get(window);
 
-            Q_ASSERT(windowPrivate->isRenderable());
-
-            gl->makeCurrent(window);
+            if (windowPrivate->isRenderable()) {
+                gl->makeCurrent(window);
 
-            if (windowData->viewportSize != windowData->windowSize) {
+                if (windowData->viewportSize != windowData->windowSize) {
 #ifdef THREAD_DEBUG
-                printf("                RenderThread: --- window has changed size...\n");
+                    printf("                RenderThread: --- window has changed size...\n");
 #endif
-                windowData->viewportSize = windowData->windowSize;
-                windowData->sizeWasChanged = true;
-                glViewport(0, 0, windowData->viewportSize.width(), windowData->viewportSize.height());
-            }
+                    windowData->viewportSize = windowData->windowSize;
+                    windowData->sizeWasChanged = true;
+                    glViewport(0, 0, windowData->viewportSize.width(), windowData->viewportSize.height());
+                }
 
-            windowPrivate->syncSceneGraph();
+                windowPrivate->syncSceneGraph();
+            } else {
+                qWarning().nospace()
+                    << "Non-renderable window " << window
+                    << " (" << window->geometry() << ").";
+            }
         }
         inSync = false;
 
diff --git a/src/quick/items/qquickwindowmanager.cpp b/src/quick/items/qquickwindowmanager.cpp
index dd27182ffe..50887e8e99 100644
--- a/src/quick/items/qquickwindowmanager.cpp
+++ b/src/quick/items/qquickwindowmanager.cpp
@@ -225,7 +225,13 @@ void QQuickTrivialWindowManager::renderWindow(QQuickWindow *window)
     if (!masterWindow)
         return;
 
-    Q_ASSERT(QQuickWindowPrivate::get(masterWindow)->isRenderable());
+    if (!QQuickWindowPrivate::get(masterWindow)->isRenderable()) {
+        qWarning().nospace()
+            << "Unable to find a renderable master window "
+            << masterWindow << "when trying to render"
+            << window << " (" << window->geometry() << ").";
+        return;
+    }
 
     if (!gl) {
         gl = new QOpenGLContext();
-- 
GitLab