Don't try to reload QQuick images when changing to null screen
authorTaylor Braun-Jones <taylor.braun-jones@ge.com>
Thu, 31 Jul 2014 23:47:04 +0000 (19:47 -0400)
committerShawn Rutledge <shawn.rutledge@digia.com>
Wed, 6 Aug 2014 09:01:30 +0000 (11:01 +0200)
When a QGuiApplication is destructing, a screen change occurs causing
QQuickImageBase to reload images ultimately resulting in "QPixmap: Must
construct a QGuiApplication before a QPixmap". This patch fixes the
issue (except for systems which multiple screens, which is a separate
issue).

Task-number: QTBUG-40539
Change-Id: I4bafc9790741204e90190a4491ac7a9393d0d0a7
Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
src/quick/items/qquickimagebase.cpp
src/quick/items/qquickimagebase_p.h

index bf67cbe..738430d 100644 (file)
@@ -292,10 +292,10 @@ void QQuickImageBase::handleWindowChanged(QQuickWindow* window)
         connect(window, SIGNAL(screenChanged(QScreen*)), this, SLOT(handleScreenChanged(QScreen*)));
 }
 
-void QQuickImageBase::handleScreenChanged(QScreen*)
+void QQuickImageBase::handleScreenChanged(QScreen* screen)
 {
     // Screen DPI might have changed, reload images on screen change.
-    if (isComponentComplete())
+    if (screen && isComponentComplete())
         load();
 }
 
index 67f1e81..a3d9e3a 100644 (file)
@@ -107,7 +107,7 @@ private Q_SLOTS:
     virtual void requestFinished();
     void requestProgress(qint64,qint64);
     void handleWindowChanged(QQuickWindow *window);
-    void handleScreenChanged(QScreen *);
+    void handleScreenChanged(QScreen *screen);
 
 private:
     Q_DISABLE_COPY(QQuickImageBase)