aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVladimir Belyavsky <belyavskyv@gmail.com>2023-01-30 17:18:54 +0300
committerVladimir Belyavsky <belyavskyv@gmail.com>2023-01-31 10:52:53 +0000
commit1b635cf8311c0109e276f958069b56dd9817c1c9 (patch)
tree35d1027e09d72fdc7bc8404d64372f92e6857536
parentb48cf3dcba1e4c0bb56af0068dc467b393f44027 (diff)
AnimatedImage: Introduce private clearCache() method
Introduce clearCache() method in QQuickAnimatedImagePrivate and use it wherever applicable to make the code a bit cleaner. Also don't clean the cache explicitly on setSource(), as it's still cleared in setMovie() call. Change-Id: I299b138371534ff091248013ac833d734d8a6607 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
-rw-r--r--src/quick/items/qquickanimatedimage.cpp25
-rw-r--r--src/quick/items/qquickanimatedimage_p_p.h1
2 files changed, 12 insertions, 14 deletions
diff --git a/src/quick/items/qquickanimatedimage.cpp b/src/quick/items/qquickanimatedimage.cpp
index 7d08782aab..e4bc156a30 100644
--- a/src/quick/items/qquickanimatedimage.cpp
+++ b/src/quick/items/qquickanimatedimage.cpp
@@ -47,6 +47,12 @@ QQuickPixmap* QQuickAnimatedImagePrivate::infoForCurrentFrame(QQmlEngine *engine
return frameMap.value(current);
}
+void QQuickAnimatedImagePrivate::clearCache()
+{
+ qDeleteAll(frameMap);
+ frameMap.clear();
+}
+
/*!
\qmltype AnimatedImage
\instantiates QQuickAnimatedImage
@@ -117,8 +123,7 @@ QQuickAnimatedImage::~QQuickAnimatedImage()
d->reply->deleteLater();
#endif
delete d->movie;
- qDeleteAll(d->frameMap);
- d->frameMap.clear();
+ d->clearCache();
}
/*!
@@ -268,9 +273,6 @@ void QQuickAnimatedImage::setSource(const QUrl &url)
#endif
d->setImage(QImage());
- qDeleteAll(d->frameMap);
- d->frameMap.clear();
-
d->oldPlaying = isPlaying();
d->setMovie(nullptr);
d->url = url;
@@ -425,10 +427,8 @@ void QQuickAnimatedImage::movieUpdate()
{
Q_D(QQuickAnimatedImage);
- if (!d->cache) {
- qDeleteAll(d->frameMap);
- d->frameMap.clear();
- }
+ if (!d->cache)
+ d->clearCache();
if (d->movie) {
d->setPixmap(*d->infoForCurrentFrame(qmlEngine(this)));
@@ -454,8 +454,7 @@ void QQuickAnimatedImage::onCacheChanged()
{
Q_D(QQuickAnimatedImage);
if (!cache()) {
- qDeleteAll(d->frameMap);
- d->frameMap.clear();
+ d->clearCache();
if (d->movie)
d->movie->setCacheMode(QMovie::CacheNone);
} else {
@@ -484,9 +483,7 @@ void QQuickAnimatedImagePrivate::setMovie(QMovie *m)
}
movie = m;
-
- qDeleteAll(frameMap);
- frameMap.clear();
+ clearCache();
if (movie)
movie->setScaledSize(sourcesize);
diff --git a/src/quick/items/qquickanimatedimage_p_p.h b/src/quick/items/qquickanimatedimage_p_p.h
index 341ac3bc02..2b01b4365d 100644
--- a/src/quick/items/qquickanimatedimage_p_p.h
+++ b/src/quick/items/qquickanimatedimage_p_p.h
@@ -44,6 +44,7 @@ public:
QQuickPixmap *infoForCurrentFrame(QQmlEngine *engine);
void setMovie(QMovie *movie);
+ void clearCache();
bool playing : 1;
bool paused : 1;