forked from qt-creator/qt-creator
QmlDesigner: Don't copy the target
It is to costly. It is not thread save but we think there will be no race condition. To improve the code we should capture only the needed data and copy that. Change-Id: Ide9c640a98c2aab6fbf25beedc9f533b695b9f02 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
@@ -96,12 +96,8 @@ void ItemLibraryView::modelAttached(Model *model)
|
||||
auto target = QmlDesignerPlugin::instance()->currentDesignDocument()->currentTarget();
|
||||
m_imageCacheData->cache.clean();
|
||||
|
||||
if (target) {
|
||||
auto clonedTarget = std::make_unique<ProjectExplorer::Target>(
|
||||
target->project(), target->kit()->clone(), ProjectExplorer::Target::_constructor_tag{});
|
||||
|
||||
m_imageCacheData->collector.setTarget(std::move(clonedTarget));
|
||||
}
|
||||
if (target)
|
||||
m_imageCacheData->collector.setTarget(target);
|
||||
|
||||
m_widget->clearSearchFilter();
|
||||
m_widget->setModel(model);
|
||||
|
@@ -99,7 +99,7 @@ void ImageCacheCollector::start(Utils::SmallStringView name,
|
||||
|
||||
m_connectionManager.setCallback(std::move(captureCallback));
|
||||
|
||||
nodeInstanceView.setTarget(m_target.get());
|
||||
nodeInstanceView.setTarget(m_target.data());
|
||||
nodeInstanceView.setCrashCallback(abortCallback);
|
||||
model->setNodeInstanceView(&nodeInstanceView);
|
||||
|
||||
@@ -115,9 +115,9 @@ void ImageCacheCollector::start(Utils::SmallStringView name,
|
||||
abortCallback();
|
||||
}
|
||||
|
||||
void ImageCacheCollector::setTarget(std::unique_ptr<ProjectExplorer::Target> target)
|
||||
void ImageCacheCollector::setTarget(ProjectExplorer::Target *target)
|
||||
{
|
||||
m_target = std::move(target);
|
||||
m_target = target;
|
||||
}
|
||||
|
||||
} // namespace QmlDesigner
|
||||
|
@@ -27,7 +27,7 @@
|
||||
|
||||
#include "imagecachecollectorinterface.h"
|
||||
|
||||
#include <memory>
|
||||
#include <QPointer>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QTextDocument;
|
||||
@@ -57,11 +57,11 @@ public:
|
||||
CaptureCallback captureCallback,
|
||||
AbortCallback abortCallback) override;
|
||||
|
||||
void setTarget(std::unique_ptr<ProjectExplorer::Target> target);
|
||||
void setTarget(ProjectExplorer::Target *target);
|
||||
|
||||
private:
|
||||
ImageCacheConnectionManager &m_connectionManager;
|
||||
std::unique_ptr<ProjectExplorer::Target> m_target;
|
||||
QPointer<ProjectExplorer::Target> m_target;
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
|
Reference in New Issue
Block a user