diff --git a/bug325580.patch b/bug325580.patch new file mode 100644 index 0000000..4c61c82 --- /dev/null +++ b/bug325580.patch @@ -0,0 +1,141 @@ +commit d523a9768ab8276860c76e02b9d9b598a3d607f9 +Author: Gilles Caulier +Date: Thu Sep 11 19:40:30 2014 +0200 + + Fix job reset when it's done : do not return directly is an error appera with a job, without to reset job. + Fix broken signal/slot connection. + BUGS: 325580 + FIXED-IN: 4.4.0 + +diff --git a/digikam/album/albumlabelstreeview.cpp b/digikam/album/albumlabelstreeview.cpp +index 2e1ff30..2047cdf 100644 +--- a/core/digikam/album/albumlabelstreeview.cpp ++++ b/core/digikam/album/albumlabelstreeview.cpp +@@ -934,7 +934,6 @@ void AlbumLabelsSearchHandler::slotResult(KJob* job) + // Pop-up a message about the error. + DNotificationWrapper(QString(), job->errorString(), + DigikamApp::instance(), DigikamApp::instance()->windowTitle()); +- return; + } + } + +diff --git a/digikam/album/albummanager.cpp b/digikam/album/albummanager.cpp +index bd05e27..02452b0 100644 +--- a/core/digikam/album/albummanager.cpp ++++ b/core/digikam/album/albummanager.cpp +@@ -2969,7 +2969,6 @@ void AlbumManager::slotAlbumsJobResult(KJob* job) + // Pop-up a message about the error. + DNotificationWrapper(QString(), job->errorString(), + 0, i18n("digiKam")); +- return; + } + } + +@@ -3000,7 +2999,6 @@ void AlbumManager::slotPeopleJobResult(KJob* job) + // Pop-up a message about the error. + DNotificationWrapper(QString(), job->errorString(), + 0, i18n("digiKam")); +- return; + } + } + +@@ -3044,7 +3042,6 @@ void AlbumManager::slotTagsJobResult(KJob* job) + // Pop-up a message about the error. + DNotificationWrapper(QString(), job->errorString(), + 0, i18n("digiKam")); +- return; + } + } + +@@ -3075,7 +3072,6 @@ void AlbumManager::slotDatesJobResult(KJob* job) + // Pop-up a message about the error. + DNotificationWrapper(QString(), job->errorString(), + 0, i18n("digiKam")); +- return; + } + + emit signalAllDAlbumsLoaded(); +diff --git a/libs/models/imagealbummodel.cpp b/libs/models/imagealbummodel.cpp +index 7681fa3..5486b55 100644 +--- a/core/libs/models/imagealbummodel.cpp ++++ b/core/libs/models/imagealbummodel.cpp +@@ -346,7 +346,6 @@ void ImageAlbumModel::slotResult(KJob* job) + // Pop-up a message about the error. + DNotificationWrapper(QString(), job->errorString(), + DigikamApp::instance(), DigikamApp::instance()->windowTitle()); +- return; + } + } + +diff --git a/showfoto/main/showfoto.cpp b/showfoto/main/showfoto.cpp +index 4d8ff09..9d407f7 100644 +--- a/core/showfoto/main/showfoto.cpp ++++ b/core/showfoto/main/showfoto.cpp +@@ -912,7 +912,7 @@ void ShowFoto::saveAsIsComplete() + + // Pop-up a message to bring user when save is done. + Digikam::DNotificationWrapper("editorsavefilecompleted", i18n("Image saved successfully"), +- this, windowTitle()); ++ this, windowTitle()); + */ + } + +diff --git a/utilities/maintenance/duplicatesfinder.cpp b/utilities/maintenance/duplicatesfinder.cpp +index 2636d7d..9ed2f9e 100644 +--- a/core/utilities/maintenance/duplicatesfinder.cpp ++++ b/core/utilities/maintenance/duplicatesfinder.cpp +@@ -110,7 +110,7 @@ void DuplicatesFinder::slotStart() + d->job->addMetaData("threshold", QString::number(thresh)); + + connect(d->job, SIGNAL(result(KJob*)), +- this, SLOT(slotDone(KJob*))); ++ this, SLOT(slotDone())); + + connect(d->job, SIGNAL(totalAmount(KJob*,KJob::Unit,qulonglong)), + this, SLOT(slotDuplicatesSearchTotalAmount(KJob*,KJob::Unit,qulonglong))); +@@ -139,10 +139,9 @@ void DuplicatesFinder::slotDone() + // Pop-up a message about the error. + DNotificationWrapper(QString(), d->job->errorString(), + DigikamApp::instance(), DigikamApp::instance()->windowTitle()); +- return; + } + +- d->job = NULL; ++ d->job = 0; + MaintenanceTool::slotDone(); + } + +@@ -151,7 +150,7 @@ void DuplicatesFinder::slotCancel() + if (d->job) + { + d->job->kill(); +- d->job = NULL; ++ d->job = 0; + } + + MaintenanceTool::slotCancel(); +diff --git a/utilities/maintenance/imageinfojob.cpp b/utilities/maintenance/imageinfojob.cpp +index 397601e..9efe80e 100644 +--- a/core/utilities/maintenance/imageinfojob.cpp ++++ b/core/utilities/maintenance/imageinfojob.cpp +@@ -110,6 +110,8 @@ bool ImageInfoJob::isRunning() const + + void ImageInfoJob::slotResult(KJob* job) + { ++ d->job = 0; ++ + if (job->error()) + { + kWarning() << "Failed to list url: " << job->errorString(); +@@ -117,11 +119,8 @@ void ImageInfoJob::slotResult(KJob* job) + // Pop-up a message about the error. + DNotificationWrapper(QString(), d->job->errorString(), + DigikamApp::instance(), DigikamApp::instance()->windowTitle()); +- return; + } + +- d->job = 0; +- + emit signalCompleted(); + } + diff --git a/digikam.changes b/digikam.changes index bb78a76..758bd98 100644 --- a/digikam.changes +++ b/digikam.changes @@ -1,3 +1,16 @@ +------------------------------------------------------------------- +Wed Sep 24 17:47:04 UTC 2014 - hrvoje.senjan@gmail.com + +- Added handle_right_libkexiv2_version.diff and + handle_right_libkexiv2_version2.diff, kde#339144, bnc#898260 + +------------------------------------------------------------------- +Tue Sep 23 15:55:06 UTC 2014 - hrvoje.senjan@gmail.com + +- Add bug325580.patch: Fix job reset when it's done : do not return + directly is an error appera with a job, without to reset job. + kde#325580, kde#339210 + ------------------------------------------------------------------- Tue Sep 16 22:51:40 UTC 2014 - hrvoje.senjan@gmail.com diff --git a/digikam.spec b/digikam.spec index 1234c24..6a5474d 100644 --- a/digikam.spec +++ b/digikam.spec @@ -33,6 +33,12 @@ Patch3: remove-gplv2-only.patch Patch5: digikam_no_build_vkontakte.diff # PATCH-FIX-UPSTREAM digikam-3.0.0.no-kdcraw.version-check.patch -- version check for libkdcraw currently broken Patch6: digikam-3.0.0.no-kdcraw.version-check.patch +# PATCH-FIX-UPSTREAM bug325580.patch -- Fix job reset when it's done : do not return directly is an error appera with a job, without to reset job. +Patch7: bug325580.patch +# PATCH-FIX-UPSTREAM handle_right_libkexiv2_version.diff +Patch8: handle_right_libkexiv2_version.diff +# PATCH-FIX-UPSTREAM handle_right_libkexiv2_version2.diff +Patch9: handle_right_libkexiv2_version2.diff BuildRequires: ImageMagick-devel BuildRequires: bison BuildRequires: boost-devel @@ -238,6 +244,9 @@ This package contains the development files for libmediawiki. %patch3 %patch5 %patch6 -p1 +%patch7 -p1 +%patch8 -p1 +%patch9 -p1 # Remove build time references so build-compare can do its work FAKE_BUILDDATE=$(LC_ALL=C date -u -r %{_sourcedir}/%{name}.changes '+%%b %%e %%Y') diff --git a/handle_right_libkexiv2_version.diff b/handle_right_libkexiv2_version.diff new file mode 100644 index 0000000..2684af9 --- /dev/null +++ b/handle_right_libkexiv2_version.diff @@ -0,0 +1,39 @@ +commit 573069e8cd3b7155582e0c7be3625c0cc4879619 +Author: Gilles Caulier +Date: Tue Sep 23 09:49:20 2014 +0200 + + Handle right libkexiv2 version to extract preview and prevent crash in Exiv2 preview extractor. + CCBUGS: 339144 + +diff --git a/core/libs/threadimageio/thumbnailcreator.cpp b/core/libs/threadimageio/thumbnailcreator.cpp +index ed07d0d..9f238a4 100644 +--- a/core/libs/threadimageio/thumbnailcreator.cpp ++++ b/core/libs/threadimageio/thumbnailcreator.cpp +@@ -62,6 +62,7 @@ + + #include + #include ++#include + + // Local includes + +@@ -519,6 +520,9 @@ ThumbnailImage ThumbnailCreator::createT + KDcraw::loadHalfPreview(qimage, path); + } + ++ // See bug #339144 : only handle preview if right libkexiv2 version is used. ++#if KEXIV2_VERSION >= 0x020302 ++ + // Special case with DNG file. See B.K.O #338081 + if (qimage.isNull()) + { +@@ -528,6 +532,9 @@ ThumbnailImage ThumbnailCreator::createT + qimage = preview.image(); + } + ++ ++#endif ++ + // DImg-dependent loading methods: TIFF, PNG, everything supported by QImage + if (qimage.isNull() && !failedAtDImg) + { diff --git a/handle_right_libkexiv2_version2.diff b/handle_right_libkexiv2_version2.diff new file mode 100644 index 0000000..6682456 --- /dev/null +++ b/handle_right_libkexiv2_version2.diff @@ -0,0 +1,23 @@ +commit e2eeb730d02aad858f15c6f35f2a6b6beb38acf5 +Author: Gilles Caulier +Date: Tue Sep 23 10:28:39 2014 +0200 + + Another place where we need to handle right libkexiv2 version to extract preview and prevent crash in Exiv2 preview extractor. + CCBUGS: 339144 + +diff --git a/core/libs/threadimageio/previewtask.cpp b/core/libs/threadimageio/previewtask.cpp +index 3c3b72a..99bb4d6 100644 +--- a/core/libs/threadimageio/previewtask.cpp ++++ b/core/libs/threadimageio/previewtask.cpp +@@ -254,7 +254,11 @@ void PreviewLoadingTask::execute() + // require at least half preview size + if (qMax(previews.width(), previews.height()) >= sizeLimit) + { ++ ++ // See bug #339144 : only handle preview if right libkexiv2 version is used. ++#if KEXIV2_VERSION >= 0x020302 + qimage = previews.image(); ++#endif + + if (!qimage.isNull()) + {