diff options
author | Johannes Huber <johu@gentoo.org> | 2016-12-11 11:12:35 +0100 |
---|---|---|
committer | Johannes Huber <johu@gentoo.org> | 2016-12-11 11:12:35 +0100 |
commit | cd2f2c655d00e87504cd6ecbf0410ffc802f2930 (patch) | |
tree | 2aed83bb01c62bdaeb8788c49fd73f92d5918624 /media-gfx/digikam/files | |
parent | x11-wm/lumina: bump to 1.1.0 (diff) | |
download | gentoo-cd2f2c655d00e87504cd6ecbf0410ffc802f2930.tar.gz gentoo-cd2f2c655d00e87504cd6ecbf0410ffc802f2930.tar.bz2 gentoo-cd2f2c655d00e87504cd6ecbf0410ffc802f2930.zip |
media-gfx/digikam: Fix db lock issue
Revision bump adds upstream patch to fix a database lock with the batch queue
manager.
Reported-by: Oliver Schwabedissen <Oliver@Schwabedissen.name>
Gentoo-bug: 602320
Package-Manager: portage-2.3.3
Diffstat (limited to 'media-gfx/digikam/files')
-rw-r--r-- | media-gfx/digikam/files/digikam-5.3.0-db-lock.patch | 135 |
1 files changed, 135 insertions, 0 deletions
diff --git a/media-gfx/digikam/files/digikam-5.3.0-db-lock.patch b/media-gfx/digikam/files/digikam-5.3.0-db-lock.patch new file mode 100644 index 000000000000..50223f011846 --- /dev/null +++ b/media-gfx/digikam/files/digikam-5.3.0-db-lock.patch @@ -0,0 +1,135 @@ +From f37ef2c195b61a43a40e9cbb7f119fdc8e9d38f4 Mon Sep 17 00:00:00 2001 +From: Maik Qualmann <metzpinguin@gmail.com> +Date: Sat, 10 Dec 2016 11:16:50 +0100 +Subject: fix locked database with BQM + +--- + utilities/queuemanager/manager/actionthread.cpp | 27 ++++++++++++++++++++++--- + utilities/queuemanager/manager/actionthread.h | 1 + + utilities/queuemanager/manager/task.cpp | 24 +++++----------------- + 3 files changed, 30 insertions(+), 22 deletions(-) + +diff --git a/utilities/queuemanager/manager/actionthread.cpp b/utilities/queuemanager/manager/actionthread.cpp +index 48c3fa3..141bb3d 100644 +--- a/utilities/queuemanager/manager/actionthread.cpp ++++ b/utilities/queuemanager/manager/actionthread.cpp +@@ -28,6 +28,7 @@ + + #include "digikam_debug.h" + #include "digikam_config.h" ++#include "collectionscanner.h" + #include "task.h" + + namespace Digikam +@@ -82,7 +83,7 @@ void ActionThread::processQueueItems(const QList<AssignedBatchTools>& items) + { + ActionJobCollection collection; + +- for(int i = 0 ; i < items.size() ; i++) ++ for (int i = 0 ; i < items.size() ; i++) + { + Task* const t = new Task(); + t->setSettings(d->settings); +@@ -92,10 +93,12 @@ void ActionThread::processQueueItems(const QList<AssignedBatchTools>& items) + this, SIGNAL(signalStarting(Digikam::ActionData))); + + connect(t, SIGNAL(signalFinished(Digikam::ActionData)), +- this, SIGNAL(signalFinished(Digikam::ActionData))); ++ this, SLOT(slotUpdateImageInfo(Digikam::ActionData)), ++ Qt::BlockingQueuedConnection); + + connect(this, SIGNAL(signalCancelTask()), +- t, SLOT(slotCancel()), Qt::QueuedConnection); ++ t, SLOT(slotCancel()), ++ Qt::QueuedConnection); + + collection.insert(t, 0); + } +@@ -111,6 +114,24 @@ void ActionThread::cancel() + ActionThreadBase::cancel(); + } + ++void ActionThread::slotUpdateImageInfo(const Digikam::ActionData& ad) ++{ ++ if (ad.status == ActionData::BatchDone) ++ { ++ CollectionScanner scanner; ++ ImageInfo source = ImageInfo::fromUrl(ad.fileUrl); ++ qlonglong id = scanner.scanFile(ad.destUrl.toLocalFile(), CollectionScanner::NormalScan); ++ ImageInfo info(id); ++ QDateTime dateTime = info.dateTime(); ++ // Copy the digiKam attributes from original file to the new file ++ CollectionScanner::copyFileProperties(source, info); ++ // Restore date time from new file ++ info.setDateTime(dateTime); ++ } ++ ++ emit signalFinished(ad); ++} ++ + void ActionThread::slotThreadFinished() + { + if (isEmpty()) +diff --git a/utilities/queuemanager/manager/actionthread.h b/utilities/queuemanager/manager/actionthread.h +index 8cb848b..3375c2e 100644 +--- a/utilities/queuemanager/manager/actionthread.h ++++ b/utilities/queuemanager/manager/actionthread.h +@@ -72,6 +72,7 @@ Q_SIGNALS: + + private Q_SLOTS: + ++ void slotUpdateImageInfo(const Digikam::ActionData& ad); + void slotThreadFinished(); + + private: +diff --git a/utilities/queuemanager/manager/task.cpp b/utilities/queuemanager/manager/task.cpp +index a94b4f9..4c6b710 100644 +--- a/utilities/queuemanager/manager/task.cpp ++++ b/utilities/queuemanager/manager/task.cpp +@@ -46,10 +46,8 @@ extern "C" + #include "dimg.h" + #include "dmetadata.h" + #include "imageinfo.h" +-#include "fileactionmngr.h" + #include "batchtool.h" + #include "batchtoolsmanager.h" +-#include "collectionscanner.h" + #include "fileoperation.h" + + namespace Digikam +@@ -245,27 +243,15 @@ void Task::run() + } + } + +- if (!FileOperation::localFileRename(d->tools.m_itemUrl.toLocalFile(), +- outUrl.toLocalFile(), +- dest.toLocalFile())) ++ if (FileOperation::localFileRename(d->tools.m_itemUrl.toLocalFile(), ++ outUrl.toLocalFile(), ++ dest.toLocalFile())) + { +- emitActionData(ActionData::BatchFailed, i18n("Failed to create file..."), dest); ++ emitActionData(ActionData::BatchDone, i18n("Item processed successfully %1", renameMess), dest); + } + else + { +- // -- Now copy the digiKam attributes from original file to the new file ------------ +- +- CollectionScanner scanner; +- qlonglong id = scanner.scanFile(dest.toLocalFile(), CollectionScanner::NormalScan); +- +- ImageInfo destInfo(id); +- CollectionScanner::copyFileProperties(source, destInfo); +- +- // -- Read again new file that the database is up to date --------------------------- +- +- scanner.scanFile(destInfo, CollectionScanner::Rescan); +- +- emitActionData(ActionData::BatchDone, i18n("Item processed successfully %1", renameMess), dest); ++ emitActionData(ActionData::BatchFailed, i18n("Failed to create file..."), dest); + } + } + else +-- +cgit v0.11.2 + |