summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Bubke <marco.bubke@qt.io>2022-01-20 11:22:20 +0100
committerMarco Bubke <marco.bubke@qt.io>2022-01-20 13:58:56 +0000
commit1fb54d4f2b0fc398ff86e226cc915cabcb5c0a42 (patch)
treeed4a6695feefaec7f79801d18acb62027a3dd6e8
parent2dead05a039ae99f4961dffac5487d2137359616 (diff)
downloadqt-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.cpp23
-rw-r--r--src/plugins/qmldesigner/qmldesignerprojectmanager.h2
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