diff options
author | Marco Bubke <marco.bubke@qt.io> | 2022-01-20 11:22:20 +0100 |
---|---|---|
committer | Marco Bubke <marco.bubke@qt.io> | 2022-01-20 13:58:56 +0000 |
commit | 1fb54d4f2b0fc398ff86e226cc915cabcb5c0a42 (patch) | |
tree | ed4a6695feefaec7f79801d18acb62027a3dd6e8 | |
parent | 2dead05a039ae99f4961dffac5487d2137359616 (diff) | |
download | qt-creator-1fb54d4f2b0fc398ff86e226cc915cabcb5c0a42.tar.gz |
QmlDesigner: Delete the preview factory for every project change
Change-Id: Ia49608ea327d68ec12969cc079d85895515e1f12
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
-rw-r--r-- | src/plugins/qmldesigner/qmldesignerprojectmanager.cpp | 23 | ||||
-rw-r--r-- | src/plugins/qmldesigner/qmldesignerprojectmanager.h | 2 |
2 files changed, 13 insertions, 12 deletions
diff --git a/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp b/src/plugins/qmldesigner/qmldesignerprojectmanager.cpp index 2f8e754b89..e9de2cb251 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<Sqlite::Database> storage{database}; - ImageCacheConnectionManager connectionManager; - ImageCacheCollector collector{connectionManager, - ImageCacheCollectorNullImageHandling::DontCaptureNullImage}; - TimeStampProvider timeStampProvider; AsynchronousExplicitImageCache cache{storage}; - AsynchronousImageFactory factory{storage, timeStampProvider, collector}; }; class QmlDesignerProjectManagerProjectData { public: + QmlDesignerProjectManagerProjectData(ImageCacheStorage<Sqlite::Database> &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<QmlDesignerProjectManagerProjectData>(); + m_projectData = std::make_unique<QmlDesignerProjectManagerProjectData>(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 f4a958fac5..4b993ba74d 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<QmlDesignerProjectManagerProjectData> m_projectData; std::unique_ptr<PreviewImageCacheData> m_imageCacheData; + std::unique_ptr<QmlDesignerProjectManagerProjectData> m_projectData; }; } // namespace QmlDesigner |