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::JournalMode::Wal,
|
||||||
Sqlite::LockingMode::Normal};
|
Sqlite::LockingMode::Normal};
|
||||||
ImageCacheStorage<Sqlite::Database> storage{database};
|
ImageCacheStorage<Sqlite::Database> storage{database};
|
||||||
ImageCacheConnectionManager connectionManager;
|
|
||||||
ImageCacheCollector collector{connectionManager,
|
|
||||||
ImageCacheCollectorNullImageHandling::DontCaptureNullImage};
|
|
||||||
TimeStampProvider timeStampProvider;
|
|
||||||
AsynchronousExplicitImageCache cache{storage};
|
AsynchronousExplicitImageCache cache{storage};
|
||||||
AsynchronousImageFactory factory{storage, timeStampProvider, collector};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
class QmlDesignerProjectManagerProjectData
|
class QmlDesignerProjectManagerProjectData
|
||||||
{
|
{
|
||||||
public:
|
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;
|
::ProjectExplorer::Target *activeTarget = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -157,8 +160,8 @@ void QmlDesignerProjectManager::currentEditorChanged(::Core::IEditor *)
|
|||||||
m_projectData->activeTarget);
|
m_projectData->activeTarget);
|
||||||
|
|
||||||
if (qmlBuildSystem) {
|
if (qmlBuildSystem) {
|
||||||
m_imageCacheData->collector.setTarget(m_projectData->activeTarget);
|
m_projectData->collector.setTarget(m_projectData->activeTarget);
|
||||||
m_imageCacheData->factory.generate(qmlBuildSystem->mainFilePath().toString().toUtf8());
|
m_projectData->factory.generate(qmlBuildSystem->mainFilePath().toString().toUtf8());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -166,17 +169,15 @@ void QmlDesignerProjectManager::editorsClosed(const QList<::Core::IEditor *> &)
|
|||||||
|
|
||||||
void QmlDesignerProjectManager::projectAdded(::ProjectExplorer::Project *project)
|
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();
|
m_projectData->activeTarget = project->activeTarget();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlDesignerProjectManager::aboutToRemoveProject(::ProjectExplorer::Project *)
|
void QmlDesignerProjectManager::aboutToRemoveProject(::ProjectExplorer::Project *)
|
||||||
{
|
{
|
||||||
if (m_projectData) {
|
if (m_projectData)
|
||||||
m_imageCacheData->collector.setTarget(nullptr);
|
|
||||||
m_projectData.reset();
|
m_projectData.reset();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
void QmlDesignerProjectManager::projectRemoved(::ProjectExplorer::Project *) {}
|
void QmlDesignerProjectManager::projectRemoved(::ProjectExplorer::Project *) {}
|
||||||
|
|
||||||
|
@@ -62,7 +62,7 @@ private:
|
|||||||
void projectRemoved(::ProjectExplorer::Project *project);
|
void projectRemoved(::ProjectExplorer::Project *project);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<QmlDesignerProjectManagerProjectData> m_projectData;
|
|
||||||
std::unique_ptr<PreviewImageCacheData> m_imageCacheData;
|
std::unique_ptr<PreviewImageCacheData> m_imageCacheData;
|
||||||
|
std::unique_ptr<QmlDesignerProjectManagerProjectData> m_projectData;
|
||||||
};
|
};
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
Reference in New Issue
Block a user