Changeset View
Changeset View
Standalone View
Standalone View
lib/thumbnailprovider/thumbnailprovider.cpp
Show First 20 Lines • Show All 169 Lines • ▼ Show 20 Line(s) | 158 | { | |||
---|---|---|---|---|---|
170 | mCurrentItem = KFileItem(); | 170 | mCurrentItem = KFileItem(); | ||
171 | mThumbnailGroup = ThumbnailGroup::Large; | 171 | mThumbnailGroup = ThumbnailGroup::Large; | ||
172 | createNewThumbnailGenerator(); | 172 | createNewThumbnailGenerator(); | ||
173 | } | 173 | } | ||
174 | 174 | | |||
175 | ThumbnailProvider::~ThumbnailProvider() | 175 | ThumbnailProvider::~ThumbnailProvider() | ||
176 | { | 176 | { | ||
177 | LOG(this); | 177 | LOG(this); | ||
178 | abortSubjob(); | | |||
179 | mThumbnailGenerator->cancel(); | | |||
180 | disconnect(mThumbnailGenerator, nullptr, this, nullptr); | 178 | disconnect(mThumbnailGenerator, nullptr, this, nullptr); | ||
181 | disconnect(mThumbnailGenerator, nullptr, sThumbnailWriter, nullptr); | 179 | disconnect(mThumbnailGenerator, nullptr, sThumbnailWriter, nullptr); | ||
182 | connect(mThumbnailGenerator, SIGNAL(finished()), mThumbnailGenerator, SLOT(deleteLater())); | 180 | abortSubjob(); | ||
ngraham: Remove commented-out code | |||||
181 | mThumbnailGenerator->cancel(); | ||||
183 | if (mPreviousThumbnailGenerator) { | 182 | if (mPreviousThumbnailGenerator) { | ||
184 | disconnect(mPreviousThumbnailGenerator, nullptr, sThumbnailWriter, nullptr); | 183 | disconnect(mPreviousThumbnailGenerator, nullptr, sThumbnailWriter, nullptr); | ||
185 | } | 184 | } | ||
186 | sThumbnailWriter->wait(); | 185 | sThumbnailWriter->wait(); | ||
187 | } | 186 | } | ||
188 | 187 | | |||
189 | void ThumbnailProvider::stop() | 188 | void ThumbnailProvider::stop() | ||
190 | { | 189 | { | ||
191 | // Clear mItems and create a new ThumbnailGenerator if mThumbnailGenerator is running, | 190 | // Clear mItems and create a new ThumbnailGenerator if mThumbnailGenerator is running, | ||
192 | // but also make sure that at most two ThumbnailGenerators are running. | 191 | // but also make sure that at most two ThumbnailGenerators are running. | ||
193 | // startCreatingThumbnail() will take care that these two threads won't work on the same item. | 192 | // startCreatingThumbnail() will take care that these two threads won't work on the same item. | ||
194 | mItems.clear(); | 193 | mItems.clear(); | ||
195 | abortSubjob(); | 194 | abortSubjob(); | ||
196 | if (mThumbnailGenerator->isRunning() && !mPreviousThumbnailGenerator) { | 195 | if (!mThumbnailGenerator->isStopped() && !mPreviousThumbnailGenerator) { | ||
197 | mPreviousThumbnailGenerator = mThumbnailGenerator; | 196 | mPreviousThumbnailGenerator = mThumbnailGenerator; | ||
198 | mPreviousThumbnailGenerator->cancel(); | 197 | mPreviousThumbnailGenerator->cancel(); | ||
199 | disconnect(mPreviousThumbnailGenerator, nullptr, this, nullptr); | 198 | disconnect(mPreviousThumbnailGenerator, nullptr, this, nullptr); | ||
200 | connect(mPreviousThumbnailGenerator, SIGNAL(finished()), mPreviousThumbnailGenerator, SLOT(deleteLater())); | 199 | connect(mPreviousThumbnailGenerator, SIGNAL(finished()), mPreviousThumbnailGenerator, SLOT(deleteLater())); | ||
201 | createNewThumbnailGenerator(); | 200 | createNewThumbnailGenerator(); | ||
202 | mCurrentItem = KFileItem(); | 201 | mCurrentItem = KFileItem(); | ||
203 | } | 202 | } | ||
204 | } | 203 | } | ||
▲ Show 20 Lines • Show All 314 Lines • ▼ Show 20 Line(s) | |||||
519 | void ThumbnailProvider::startCreatingThumbnail(const QString& pixPath) | 518 | void ThumbnailProvider::startCreatingThumbnail(const QString& pixPath) | ||
520 | { | 519 | { | ||
521 | LOG("Creating thumbnail from" << pixPath); | 520 | LOG("Creating thumbnail from" << pixPath); | ||
522 | // If mPreviousThumbnailGenerator is already working on our current item | 521 | // If mPreviousThumbnailGenerator is already working on our current item | ||
523 | // its thumbnail will be passed to sThumbnailWriter when ready. So we | 522 | // its thumbnail will be passed to sThumbnailWriter when ready. So we | ||
524 | // connect mPreviousThumbnailGenerator's signal "finished" to determineNextIcon | 523 | // connect mPreviousThumbnailGenerator's signal "finished" to determineNextIcon | ||
525 | // which will load the thumbnail from sThumbnailWriter or from disk | 524 | // which will load the thumbnail from sThumbnailWriter or from disk | ||
526 | // (because we re-add mCurrentItem to mItems). | 525 | // (because we re-add mCurrentItem to mItems). | ||
527 | if (mPreviousThumbnailGenerator && mPreviousThumbnailGenerator->isRunning() && | 526 | if (mPreviousThumbnailGenerator && !mPreviousThumbnailGenerator->isStopped() && | ||
528 | mOriginalUri == mPreviousThumbnailGenerator->originalUri() && | 527 | mOriginalUri == mPreviousThumbnailGenerator->originalUri() && | ||
529 | mOriginalTime == mPreviousThumbnailGenerator->originalTime() && | 528 | mOriginalTime == mPreviousThumbnailGenerator->originalTime() && | ||
530 | mOriginalFileSize == mPreviousThumbnailGenerator->originalFileSize() && | 529 | mOriginalFileSize == mPreviousThumbnailGenerator->originalFileSize() && | ||
531 | mCurrentItem.mimetype() == mPreviousThumbnailGenerator->originalMimeType()) { | 530 | mCurrentItem.mimetype() == mPreviousThumbnailGenerator->originalMimeType()) { | ||
532 | connect(mPreviousThumbnailGenerator, SIGNAL(finished()), SLOT(determineNextIcon())); | 531 | connect(mPreviousThumbnailGenerator, SIGNAL(finished()), SLOT(determineNextIcon())); | ||
533 | mItems.prepend(mCurrentItem); | 532 | mItems.prepend(mCurrentItem); | ||
534 | return; | 533 | return; | ||
535 | } | 534 | } | ||
▲ Show 20 Lines • Show All 42 Lines • Show Last 20 Lines |
Remove commented-out code