diff options
Diffstat (limited to 'src/imports/particles')
-rw-r--r-- | src/imports/particles/qdeclarativeparticles.cpp | 33 |
1 files changed, 10 insertions, 23 deletions
diff --git a/src/imports/particles/qdeclarativeparticles.cpp b/src/imports/particles/qdeclarativeparticles.cpp index 630c068..a7c445d 100644 --- a/src/imports/particles/qdeclarativeparticles.cpp +++ b/src/imports/particles/qdeclarativeparticles.cpp @@ -437,7 +437,7 @@ public: , lifeSpanDev(1000), fadeInDur(200), fadeOutDur(300) , angle(0), angleDev(0), velocity(0), velocityDev(0), emissionCarry(0.) , addParticleTime(0), addParticleCount(0), lastAdvTime(0) - , motion(0), pendingPixmapCache(false), clock(this) + , motion(0), clock(this) { } @@ -456,7 +456,7 @@ public: void updateOpacity(QDeclarativeParticle &p, int age); QUrl url; - QPixmap image; + QDeclarativePixmap image; int count; int emissionRate; qreal emissionVariance; @@ -475,7 +475,6 @@ public: QDeclarativeParticleMotion *motion; QDeclarativeParticlesPainter *paintItem; - bool pendingPixmapCache; QList<QPair<int, int> > bursts;//countLeft, emissionRate pairs QList<QDeclarativeParticle> particles; @@ -709,9 +708,6 @@ QDeclarativeParticles::QDeclarativeParticles(QDeclarativeItem *parent) QDeclarativeParticles::~QDeclarativeParticles() { - Q_D(QDeclarativeParticles); - if (d->pendingPixmapCache) - QDeclarativePixmapCache::cancel(d->url, this); } /*! @@ -732,10 +728,8 @@ QUrl QDeclarativeParticles::source() const void QDeclarativeParticles::imageLoaded() { Q_D(QDeclarativeParticles); - d->pendingPixmapCache = false; - QString errorString; - if (QDeclarativePixmapCache::get(d->url, &d->image, &errorString)==QDeclarativePixmapReply::Error) - qmlInfo(this) << errorString; + if (d->image.isError()) + qmlInfo(this) << d->image.error(); d->paintItem->updateSize(); d->paintItem->update(); } @@ -747,27 +741,20 @@ void QDeclarativeParticles::setSource(const QUrl &name) if ((d->url.isEmpty() == name.isEmpty()) && name == d->url) return; - if (d->pendingPixmapCache) { - QDeclarativePixmapCache::cancel(d->url, this); - d->pendingPixmapCache = false; - } if (name.isEmpty()) { d->url = name; - d->image = QPixmap(); + d->image.clear(this); d->paintItem->updateSize(); d->paintItem->update(); } else { d->url = name; Q_ASSERT(!name.isRelative()); - QString errorString; - QDeclarativePixmapReply::Status status = QDeclarativePixmapCache::get(d->url, &d->image, &errorString); - if (status != QDeclarativePixmapReply::Ready && status != QDeclarativePixmapReply::Error) { - QDeclarativePixmapReply *reply = QDeclarativePixmapCache::request(qmlEngine(this), d->url); - connect(reply, SIGNAL(finished()), this, SLOT(imageLoaded())); - d->pendingPixmapCache = true; + d->image.load(qmlEngine(this), d->url); + if (d->image.isLoading()) { + d->image.connectFinished(this, SLOT(imageLoaded())); } else { - if (status == QDeclarativePixmapReply::Error) - qmlInfo(this) << errorString; + if (d->image.isError()) + qmlInfo(this) << d->image.error(); //### unify with imageLoaded d->paintItem->updateSize(); d->paintItem->update(); |