diff --git a/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp b/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp index 2f8e754b893..e9de2cb251b 100644 --- a/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp +++ b/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp @@ -97,17 +97,20 @@ public: Sqlite::JournalMode::Wal, Sqlite::LockingMode::Normal}; ImageCacheStorage storage{database}; - ImageCacheConnectionManager connectionManager; - ImageCacheCollector collector{connectionManager, - ImageCacheCollectorNullImageHandling::DontCaptureNullImage}; - TimeStampProvider timeStampProvider; AsynchronousExplicitImageCache cache{storage}; - AsynchronousImageFactory factory{storage, timeStampProvider, collector}; }; class QmlDesignerProjectManagerProjectData { public: + QmlDesignerProjectManagerProjectData(ImageCacheStorage &storage) + : factory{storage, timeStampProvider, collector} + {} + ImageCacheConnectionManager connectionManager; + ImageCacheCollector collector{connectionManager, + ImageCacheCollectorNullImageHandling::DontCaptureNullImage}; + TimeStampProvider timeStampProvider; + AsynchronousImageFactory factory; ::ProjectExplorer::Target *activeTarget = nullptr; }; @@ -157,8 +160,8 @@ void QmlDesignerProjectManager::currentEditorChanged(::Core::IEditor *) m_projectData->activeTarget); if (qmlBuildSystem) { - m_imageCacheData->collector.setTarget(m_projectData->activeTarget); - m_imageCacheData->factory.generate(qmlBuildSystem->mainFilePath().toString().toUtf8()); + m_projectData->collector.setTarget(m_projectData->activeTarget); + m_projectData->factory.generate(qmlBuildSystem->mainFilePath().toString().toUtf8()); } } @@ -166,16 +169,14 @@ void QmlDesignerProjectManager::editorsClosed(const QList<::Core::IEditor *> &) void QmlDesignerProjectManager::projectAdded(::ProjectExplorer::Project *project) { - m_projectData = std::make_unique(); + m_projectData = std::make_unique(m_imageCacheData->storage); m_projectData->activeTarget = project->activeTarget(); } void QmlDesignerProjectManager::aboutToRemoveProject(::ProjectExplorer::Project *) { - if (m_projectData) { - m_imageCacheData->collector.setTarget(nullptr); + if (m_projectData) m_projectData.reset(); - } } void QmlDesignerProjectManager::projectRemoved(::ProjectExplorer::Project *) {} diff --git a/src/plugins/qmldesigner/qmldesignerprojectmanager.h b/src/plugins/qmldesigner/qmldesignerprojectmanager.h index f4a958fac5d..4b993ba74d2 100644 --- a/src/plugins/qmldesigner/qmldesignerprojectmanager.h +++ b/src/plugins/qmldesigner/qmldesignerprojectmanager.h @@ -62,7 +62,7 @@ private: void projectRemoved(::ProjectExplorer::Project *project); private: - std::unique_ptr m_projectData; std::unique_ptr m_imageCacheData; + std::unique_ptr m_projectData; }; } // namespace QmlDesigner