|
|
| |
ImagePreviewWidget::~ImagePreviewWidget() | ImagePreviewWidget::~ImagePreviewWidget() |
{ | { |
if (!d->previewJob.isNull()) |
if (d->previewJob) |
d->previewJob->kill(); | d->previewJob->kill(); |
|
|
d->blinkPreviewTimer->stop(); | d->blinkPreviewTimer->stop(); |
|
|
delete d; | delete d; |
} | } |
| |
|
|
d->previewBlink = false; | d->previewBlink = false; |
d->blinkPreviewTimer->start(200); | d->blinkPreviewTimer->start(200); |
| |
|
if (d->previewJob) |
|
d->previewJob->kill(); |
|
|
d->previewJob = new ImagePreviewJob(KURL(path), 1024, AlbumSettings::instance()->getExifRotate()); | d->previewJob = new ImagePreviewJob(KURL(path), 1024, AlbumSettings::instance()->getExifRotate()); |
| |
connect(d->previewJob, SIGNAL(signalImagePreview(const KURL&, const QImage&)), | connect(d->previewJob, SIGNAL(signalImagePreview(const KURL&, const QImage&)), |
|
|
void ImagePreviewWidget::slotGotImagePreview(const KURL&, const QImage& preview) | void ImagePreviewWidget::slotGotImagePreview(const KURL&, const QImage& preview) |
{ | { |
d->blinkPreviewTimer->stop(); | d->blinkPreviewTimer->stop(); |
d->previewJob = 0; |
|
d->preview = preview; | d->preview = preview; |
d->pixmap = QPixmap(contentsRect().size()); | d->pixmap = QPixmap(contentsRect().size()); |
|
|
|
// It is very important to kill the thumbnail job properly |
|
// so that is frees its shared memory. Otherwise the memory |
|
// will _never_ be freed, see b.k.o. #131277 |
|
if (d->previewJob) |
|
d->previewJob->kill(); |
|
d->previewJob = 0; |
|
|
updatePixmap(); | updatePixmap(); |
repaint(false); | repaint(false); |
emit previewComplete(); | emit previewComplete(); |
|
|
void ImagePreviewWidget::slotFailedImagePreview(const KURL&) | void ImagePreviewWidget::slotFailedImagePreview(const KURL&) |
{ | { |
d->blinkPreviewTimer->stop(); | d->blinkPreviewTimer->stop(); |
d->previewJob = 0; |
|
|
if (d->previewJob) |
|
d->previewJob->kill(); |
|
d->previewJob = 0; |
|
|
d->preview = QImage(); | d->preview = QImage(); |
d->pixmap = QPixmap(contentsRect().size()); | d->pixmap = QPixmap(contentsRect().size()); |
updatePixmap(); | updatePixmap(); |