summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Huber <johu@gentoo.org>2016-12-11 11:12:35 +0100
committerJohannes Huber <johu@gentoo.org>2016-12-11 11:12:35 +0100
commitcd2f2c655d00e87504cd6ecbf0410ffc802f2930 (patch)
tree2aed83bb01c62bdaeb8788c49fd73f92d5918624 /media-gfx/digikam/files
parentx11-wm/lumina: bump to 1.1.0 (diff)
downloadgentoo-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.patch135
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
+