Make use of QQuickWindowQObjectCleanup in QQuickImage.
authorGunnar Sletta <gunnar@sletta.org>
Sat, 23 Aug 2014 12:24:05 +0000 (14:24 +0200)
committerGunnar Sletta <gunnar@sletta.org>
Tue, 26 Aug 2014 04:13:27 +0000 (06:13 +0200)
Saves us a few lines..

Change-Id: I572f6fc44ede3b923208ce3563116d8fcc9bb922
Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
src/quick/items/qquickimage.cpp

index ff34fda..073b107 100644 (file)
@@ -93,14 +93,6 @@ QQuickImagePrivate::QQuickImagePrivate()
 {
 }
 
-class QQuickImageCleanup : public QRunnable
-{
-public:
-    QQuickImageCleanup(QQuickImageTextureProvider *p) : provider(p) { }
-    void run() Q_DECL_OVERRIDE { delete provider; }
-    QQuickImageTextureProvider *provider;
-};
-
 /*!
     \qmltype Image
     \instantiates QQuickImage
@@ -172,11 +164,10 @@ QQuickImage::QQuickImage(QQuickImagePrivate &dd, QQuickItem *parent)
 QQuickImage::~QQuickImage()
 {
     Q_D(QQuickImage);
-    if (QQuickWindow *w = window()) {
-        w->scheduleRenderJob(new QQuickImageCleanup(d->provider), QQuickWindow::AfterSynchronizingStage);
-    } else {
-        // Should have been released already in releaseResources or in invalidateSG.
-        Q_ASSERT(!d->provider);
+    if (d->provider) {
+        // We're guaranteed to have a window() here because the provider would have
+        // been released in releaseResources() if we were gone from a window.
+        QQuickWindowQObjectCleanupJob::schedule(window(), d->provider);
     }
 }
 
@@ -589,7 +580,7 @@ void QQuickImage::releaseResources()
 {
     Q_D(QQuickImage);
     if (d->provider) {
-        window()->scheduleRenderJob(new QQuickImageCleanup(d->provider), QQuickWindow::AfterSynchronizingStage);
+        QQuickWindowQObjectCleanupJob::schedule(window(), d->provider);
         d->provider = 0;
     }
 }