forked from qt-creator/qt-creator
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:
@@ -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 *) {}
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user