[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [digikam/frameworks] libs: Make passing arguments to ParallelWorkers work again by fixing a porting
From:       Marcel Wiesweg <marcel.wiesweg () gmx ! de>
Date:       2015-09-11 12:55:46
Message-ID: E1ZaNrm-0001D0-At () scm ! kde ! org
[Download RAW message or body]

Git commit 26d165d8b2c52a001475516ab2e64dccd7d773ab by Marcel Wiesweg.
Committed on 11/09/2015 at 12:55.
Pushed by mwiesweg into branch 'frameworks'.

Make passing arguments to ParallelWorkers work again by fixing a porting
regression due to a silent API change in QT (QMetaType::construct)

M  +6    -9    libs/fileactionmanager/databaseworkeriface.cpp
M  +2    -2    libs/fileactionmanager/databaseworkeriface.h
M  +4    -4    libs/fileactionmanager/fileactionmngr_p.cpp
M  +9    -12   libs/fileactionmanager/fileworkeriface.cpp
M  +4    -4    libs/fileactionmanager/fileworkeriface.h
M  +1    -4    libs/threads/parallelworkers.cpp

http://commits.kde.org/digikam/26d165d8b2c52a001475516ab2e64dccd7d773ab

diff --git a/libs/fileactionmanager/databaseworkeriface.cpp \
b/libs/fileactionmanager/databaseworkeriface.cpp index 282776e..c9b022a 100644
--- a/libs/fileactionmanager/databaseworkeriface.cpp
+++ b/libs/fileactionmanager/databaseworkeriface.cpp
@@ -99,7 +99,7 @@ void \
FileActionMngrDatabaseWorker::changeTags(FileActionImageInfoList infos,  
         qCDebug(DIGIKAM_GENERAL_LOG) << "Scheduled to write";
         for (ImageInfoTaskSplitter splitter(forWritingTaskList); splitter.hasNext(); \
                )
-            emit writeMetadataToFiles(new FileActionImageInfoList(splitter.next()));
+            emit writeMetadataToFiles(FileActionImageInfoList(splitter.next()));
     }
 
     infos.dbFinished();
@@ -144,7 +144,7 @@ void \
                FileActionMngrDatabaseWorker::assignPickLabel(FileActionImageInfoList \
                infos
         forWritingTaskList.schedulingForWrite(i18n("Writing metadata to files"), \
d->fileProgressCreator());  
         for (ImageInfoTaskSplitter splitter(forWritingTaskList); splitter.hasNext(); \
                )
-            emit writeMetadataToFiles(new FileActionImageInfoList(splitter.next()));
+            emit writeMetadataToFiles(FileActionImageInfoList(splitter.next()));
     }
 
     infos.dbFinished();
@@ -189,7 +189,7 @@ void \
                FileActionMngrDatabaseWorker::assignColorLabel(FileActionImageInfoList \
                info
         forWritingTaskList.schedulingForWrite(i18n("Writing metadata to files"), \
d->fileProgressCreator());  
         for (ImageInfoTaskSplitter splitter(forWritingTaskList); splitter.hasNext(); \
                )
-            emit writeMetadataToFiles(new FileActionImageInfoList(splitter.next()));
+            emit writeMetadataToFiles(FileActionImageInfoList(splitter.next()));
     }
 
     infos.dbFinished();
@@ -235,7 +235,7 @@ void \
                FileActionMngrDatabaseWorker::assignRating(FileActionImageInfoList \
                infos, i
         forWritingTaskList.schedulingForWrite(i18n("Writing metadata to files"), \
d->fileProgressCreator());  
         for (ImageInfoTaskSplitter splitter(forWritingTaskList); splitter.hasNext(); \
                )
-            emit writeMetadataToFiles(new FileActionImageInfoList(splitter.next()));
+            emit writeMetadataToFiles(FileActionImageInfoList(splitter.next()));
     }
 
     infos.dbFinished();
@@ -298,14 +298,13 @@ void \
                FileActionMngrDatabaseWorker::setExifOrientation(FileActionImageInfoList \
                in
     infos.schedulingForWrite(infos.count(), i18n("Revising Exif Orientation tags"), \
d->fileProgressCreator());  
     for (ImageInfoTaskSplitter splitter(infos); splitter.hasNext(); )
-        emit writeOrientationToFiles(new FileActionImageInfoList(splitter.next()), \
orientation); +        emit \
writeOrientationToFiles(FileActionImageInfoList(splitter.next()), orientation);  
     infos.dbFinished();
 }
 
 void FileActionMngrDatabaseWorker::applyMetadata(FileActionImageInfoList infos, \
DisjointMetadata *hub)  {
-    qCDebug(DIGIKAM_GENERAL_LOG) << "Infos size" << infos.size();
     //ScanController::instance()->suspendCollectionScan();
     {
         DatabaseOperationGroup group;
@@ -333,9 +332,7 @@ void \
FileActionMngrDatabaseWorker::applyMetadata(FileActionImageInfoList infos,  
         for (ImageInfoTaskSplitter splitter(infos); splitter.hasNext(); )
         {
-            FileActionImageInfoList* rez = new \
                FileActionImageInfoList(splitter.next());
-
-            emit writeMetadataToFiles(rez);
+            emit writeMetadataToFiles(FileActionImageInfoList(splitter.next()));
         }
     }
 
diff --git a/libs/fileactionmanager/databaseworkeriface.h \
b/libs/fileactionmanager/databaseworkeriface.h index 0e8c34d..0905f1b 100644
--- a/libs/fileactionmanager/databaseworkeriface.h
+++ b/libs/fileactionmanager/databaseworkeriface.h
@@ -58,8 +58,8 @@ public Q_SLOTS:
 
 Q_SIGNALS:
 
-    void writeMetadataToFiles(FileActionImageInfoList* infos);
-    void writeOrientationToFiles(FileActionImageInfoList* infos, int orientation);
+    void writeMetadataToFiles(FileActionImageInfoList infos);
+    void writeOrientationToFiles(FileActionImageInfoList infos, int orientation);
     void writeMetadata(FileActionImageInfoList infos);
 };
 
diff --git a/libs/fileactionmanager/fileactionmngr_p.cpp \
b/libs/fileactionmanager/fileactionmngr_p.cpp index 8b9623b..9e48bca 100644
--- a/libs/fileactionmanager/fileactionmngr_p.cpp
+++ b/libs/fileactionmanager/fileactionmngr_p.cpp
@@ -113,11 +113,11 @@ void FileActionMngr::Private::connectToDatabaseWorker()
 
 void FileActionMngr::Private::connectDatabaseToFileWorker()
 {
-    connect(dbWorker, SIGNAL(writeMetadataToFiles(FileActionImageInfoList*)),
-            fileWorker, SLOT(writeMetadataToFiles(FileActionImageInfoList*)), \
Qt::DirectConnection); +    connect(dbWorker, \
SIGNAL(writeMetadataToFiles(FileActionImageInfoList)), +            fileWorker, \
SLOT(writeMetadataToFiles(FileActionImageInfoList)), Qt::DirectConnection);  
-    connect(dbWorker, SIGNAL(writeOrientationToFiles(FileActionImageInfoList*,int)),
-            fileWorker, SLOT(writeOrientationToFiles(FileActionImageInfoList*,int)), \
Qt::DirectConnection); +    connect(dbWorker, \
SIGNAL(writeOrientationToFiles(FileActionImageInfoList,int)), +            \
fileWorker, SLOT(writeOrientationToFiles(FileActionImageInfoList,int)), \
Qt::DirectConnection);  
 }
 
diff --git a/libs/fileactionmanager/fileworkeriface.cpp \
b/libs/fileactionmanager/fileworkeriface.cpp index 0d7d7e8..f1c6ef6 100644
--- a/libs/fileactionmanager/fileworkeriface.cpp
+++ b/libs/fileactionmanager/fileworkeriface.cpp
@@ -42,11 +42,11 @@
 namespace Digikam
 {
 
-void FileActionMngrFileWorker::writeOrientationToFiles(FileActionImageInfoList* \
infos, int orientation) +void \
FileActionMngrFileWorker::writeOrientationToFiles(FileActionImageInfoList infos, int \
orientation)  {
     QStringList failedItems;
 
-    foreach(const ImageInfo& info, *infos)
+    foreach(const ImageInfo& info, infos)
     {
         if (state() == WorkerObject::Deactivating)
         {
@@ -69,7 +69,7 @@ void \
FileActionMngrFileWorker::writeOrientationToFiles(FileActionImageInfoList*  \
ImageAttributesWatch::instance()->fileMetadataChanged(url);  }
 
-        infos->writtenToOne();
+        infos.writtenToOne();
     }
 
     if (!failedItems.isEmpty())
@@ -77,16 +77,16 @@ void \
                FileActionMngrFileWorker::writeOrientationToFiles(FileActionImageInfoList*
                
         emit imageChangeFailed(i18n("Failed to revise Exif orientation these \
files:"), failedItems);  }
 
-    infos->finishedWriting();
+    infos.finishedWriting();
 }
 
-void FileActionMngrFileWorker::writeMetadataToFiles(FileActionImageInfoList *infos)
+void FileActionMngrFileWorker::writeMetadataToFiles(FileActionImageInfoList infos)
 {
-    d->startingToWrite(*infos);
+    d->startingToWrite(infos);
 
     ScanController::instance()->suspendCollectionScan();
 
-    foreach(const ImageInfo& info, *infos)
+    foreach(const ImageInfo& info, infos)
     {
         MetadataHub hub;
 
@@ -102,19 +102,16 @@ void \
FileActionMngrFileWorker::writeMetadataToFiles(FileActionImageInfoList *inf  \
writeScope.changed(hub.write(filePath, MetadataHub::FullWrite));  // hub emits \
fileMetadataChanged  
-        infos->writtenToOne();
+        infos.writtenToOne();
     }
 
     ScanController::instance()->resumeCollectionScan();
 
-    infos->finishedWriting();
-
-    delete infos;
+    infos.finishedWriting();
 }
 
 void FileActionMngrFileWorker::writeMetadata(FileActionImageInfoList infos, \
MetadataHub* hub)  {
-    qCDebug(DIGIKAM_GENERAL_LOG) << "post signal infos size " << infos.size();
     d->startingToWrite(infos);
 
     ScanController::instance()->suspendCollectionScan();
diff --git a/libs/fileactionmanager/fileworkeriface.h \
b/libs/fileactionmanager/fileworkeriface.h index f0768fb..6af6f64 100644
--- a/libs/fileactionmanager/fileworkeriface.h
+++ b/libs/fileactionmanager/fileworkeriface.h
@@ -42,8 +42,8 @@ class FileWorkerInterface : public WorkerObject
 
 public Q_SLOTS:
 
-    virtual void writeOrientationToFiles(FileActionImageInfoList*, int){};
-    virtual void writeMetadataToFiles(FileActionImageInfoList*)        {};
+    virtual void writeOrientationToFiles(FileActionImageInfoList, int){};
+    virtual void writeMetadataToFiles(FileActionImageInfoList)        {};
     virtual void writeMetadata(FileActionImageInfoList, MetadataHub*) {};
     virtual void transform(FileActionImageInfoList, int)              {};
 
@@ -67,8 +67,8 @@ public:
 
 public:
 
-    void writeOrientationToFiles(FileActionImageInfoList *infos, int orientation);
-    void writeMetadataToFiles(FileActionImageInfoList* infos);
+    void writeOrientationToFiles(FileActionImageInfoList infos, int orientation);
+    void writeMetadataToFiles(FileActionImageInfoList infos);
     void writeMetadata(FileActionImageInfoList infos, MetadataHub* hub);
     void transform(FileActionImageInfoList infos, int orientation);
     void ajustFaceRectangles(const ImageInfo &info, int action);
diff --git a/libs/threads/parallelworkers.cpp b/libs/threads/parallelworkers.cpp
index 4a04771..a2e0a23 100644
--- a/libs/threads/parallelworkers.cpp
+++ b/libs/threads/parallelworkers.cpp
@@ -175,7 +175,6 @@ int \
ParallelWorkers::replacementStaticQtMetacall(QMetaObject::Call _c, int _id,  
         for (int i = 0; i < types.size(); i++)
         {
-            qCWarning(DIGIKAM_GENERAL_LOG) << "Datatype" << types[i] << ".";
             int typeId = QMetaType::type(types[i].constData());
 
             if (!typeId && _a[i+1])
@@ -185,10 +184,8 @@ int \
ParallelWorkers::replacementStaticQtMetacall(QMetaObject::Call _c, int _id,  }
 
             // we use QMetaType to copy the data. _a[0] is reserved for a return \
                parameter.
-            void* const data = QMetaType(typeId).construct(_a[i+1]);
+            void* const data = QMetaType::create(typeId, _a[i+1]);
             args[i]          = QGenericArgument(types[i].constData(), data);
-            qCDebug(DIGIKAM_GENERAL_LOG) << "Data:" << \
                QLatin1String(types[i].constData());
-
         }
 
         // Find the object to be invoked


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic