diff --git a/autotests/server/itemretrievertest.cpp b/autotests/server/itemretrievertest.cpp --- a/autotests/server/itemretrievertest.cpp +++ b/autotests/server/itemretrievertest.cpp @@ -300,8 +300,8 @@ // Setup for (int step = 0; step < 2; ++step) { DbInitializer dbInitializer; - FakeItemRetrievalJobFactory factory(dbInitializer); - ItemRetrievalManager mgr(&factory); + auto *factory = new FakeItemRetrievalJobFactory(dbInitializer); + ItemRetrievalManager mgr{std::unique_ptr(factory)}; QTest::qWait(100); // Given a PimItem with existing parts @@ -315,7 +315,7 @@ } Q_FOREACH (const auto &availablePart, availableParts) { - factory.addJobResult(item.id(), availablePart.first, availablePart.second); + factory->addJobResult(item.id(), availablePart.first, availablePart.second); } if (step == 0) { @@ -333,7 +333,7 @@ } // Check that the factory had exactly one retrieval job - QCOMPARE(factory.jobsCount(), expectedRetrievalJobs); + QCOMPARE(factory->jobsCount(), expectedRetrievalJobs); } else { QVector threads; diff --git a/src/server/storage/itemretrievalmanager.h b/src/server/storage/itemretrievalmanager.h --- a/src/server/storage/itemretrievalmanager.h +++ b/src/server/storage/itemretrievalmanager.h @@ -55,7 +55,7 @@ Q_OBJECT public: explicit ItemRetrievalManager(QObject *parent = nullptr); - explicit ItemRetrievalManager(AbstractItemRetrievalJobFactory *factory, QObject *parent = nullptr); + explicit ItemRetrievalManager(std::unique_ptr factory, QObject *parent = nullptr); ~ItemRetrievalManager() override; /** @@ -85,7 +85,7 @@ protected: static ItemRetrievalManager *sInstance; - AbstractItemRetrievalJobFactory *mJobFactory = nullptr; + std::unique_ptr mJobFactory; /// Protects mPendingRequests and every Request object posted to it QReadWriteLock *mLock = nullptr; diff --git a/src/server/storage/itemretrievalmanager.cpp b/src/server/storage/itemretrievalmanager.cpp --- a/src/server/storage/itemretrievalmanager.cpp +++ b/src/server/storage/itemretrievalmanager.cpp @@ -46,13 +46,13 @@ }; ItemRetrievalManager::ItemRetrievalManager(QObject *parent) - : ItemRetrievalManager(new ItemRetrievalJobFactory, parent) + : ItemRetrievalManager(std::make_unique(), parent) { } -ItemRetrievalManager::ItemRetrievalManager(AbstractItemRetrievalJobFactory *factory, QObject *parent) +ItemRetrievalManager::ItemRetrievalManager(std::unique_ptr factory, QObject *parent) : AkThread(QStringLiteral("ItemRetrievalManager"), QThread::HighPriority, parent) - , mJobFactory(factory) + , mJobFactory(std::move(factory)) { qDBusRegisterMetaType();