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>
This commit is contained in:
Marco Bubke
2022-01-20 11:22:20 +01:00
parent 2dead05a03
commit 1fb54d4f2b
2 changed files with 13 additions and 12 deletions

View File

@@ -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 *) {}

View File

@@ -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