PerfProfiler: Avoid some warnings

Use std::unique_ptr instead of QScopedPointer for pointers we want to
release().

Change-Id: I80732bb7bd81d8c0a5a1a647d22282c32e918fe2
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
Ulf Hermann
2024-09-26 15:39:15 +02:00
parent 07061becdd
commit d9f0eb37ac
4 changed files with 20 additions and 20 deletions

View File

@@ -75,8 +75,8 @@ public:
void setManager(const PerfProfilerTraceManager *manager) { m_manager = manager; } void setManager(const PerfProfilerTraceManager *manager) { m_manager = manager; }
const PerfProfilerTraceManager *manager() const { return m_manager; } const PerfProfilerTraceManager *manager() const { return m_manager; }
PerfProfilerFlameGraphModel::Data *stackBottom() const { return m_stackBottom.data(); } PerfProfilerFlameGraphModel::Data *stackBottom() const { return m_stackBottom.get(); }
void swapStackBottom(QScopedPointer<PerfProfilerFlameGraphModel::Data> &stackBottom) void swapStackBottom(std::unique_ptr<PerfProfilerFlameGraphModel::Data> &stackBottom)
{ {
m_stackBottom.swap(stackBottom); m_stackBottom.swap(stackBottom);
} }
@@ -84,7 +84,7 @@ public:
uint resourcePeakId() const { return m_resourcePeakId; } uint resourcePeakId() const { return m_resourcePeakId; }
private: private:
QScopedPointer<PerfProfilerFlameGraphModel::Data> m_stackBottom; std::unique_ptr<PerfProfilerFlameGraphModel::Data> m_stackBottom;
std::unordered_map<quint32, ProcessResourceCounter> m_resourceBlocks; std::unordered_map<quint32, ProcessResourceCounter> m_resourceBlocks;
QPointer<const PerfProfilerTraceManager> m_manager; QPointer<const PerfProfilerTraceManager> m_manager;
uint m_resourcePeakId = 0; uint m_resourcePeakId = 0;
@@ -106,7 +106,7 @@ PerfProfilerFlameGraphModel::PerfProfilerFlameGraphModel(PerfProfilerTraceManage
PerfProfilerFlameGraphModel::~PerfProfilerFlameGraphModel() PerfProfilerFlameGraphModel::~PerfProfilerFlameGraphModel()
{ {
// If the offline data isn't here, we're being deleted while loading something. That's unnice. // If the offline data isn't here, we're being deleted while loading something. That's unnice.
QTC_CHECK(!m_offlineData.isNull()); QTC_CHECK(m_offlineData);
} }
QModelIndex PerfProfilerFlameGraphModel::index(int row, int column, const QModelIndex &parent) const QModelIndex PerfProfilerFlameGraphModel::index(int row, int column, const QModelIndex &parent) const
@@ -122,8 +122,8 @@ QModelIndex PerfProfilerFlameGraphModel::parent(const QModelIndex &child) const
{ {
if (child.isValid()) { if (child.isValid()) {
Data *childData = static_cast<Data *>(child.internalPointer()); Data *childData = static_cast<Data *>(child.internalPointer());
return childData->parent == m_stackBottom.data() ? QModelIndex() return childData->parent == m_stackBottom.get() ? QModelIndex()
: createIndex(0, 0, childData->parent); : createIndex(0, 0, childData->parent);
} }
return {}; return {};
} }
@@ -153,7 +153,7 @@ QVariant PerfProfilerFlameGraphModel::data(const QModelIndex &index, int role) c
{ {
const Data *data = static_cast<Data *>(index.internalPointer()); const Data *data = static_cast<Data *>(index.internalPointer());
if (!data) if (!data)
data = m_stackBottom.data(); data = m_stackBottom.get();
switch (role) { switch (role) {
case TypeIdRole: case TypeIdRole:
@@ -210,7 +210,7 @@ QVariant PerfProfilerFlameGraphModel::data(const QModelIndex &index, int role) c
void PerfProfilerFlameGraphModel::initialize() void PerfProfilerFlameGraphModel::initialize()
{ {
PerfProfilerFlameGraphData *offline = m_offlineData.take(); PerfProfilerFlameGraphData *offline = m_offlineData.release();
QTC_ASSERT(offline, return); QTC_ASSERT(offline, return);
QTC_ASSERT(offline->isEmpty(), offline->clear()); QTC_ASSERT(offline->isEmpty(), offline->clear());
offline->setManager(qobject_cast<PerfProfilerTraceManager *>(QObject::parent())); offline->setManager(qobject_cast<PerfProfilerTraceManager *>(QObject::parent()));
@@ -289,7 +289,7 @@ void PerfProfilerFlameGraphData::loadEvent(const PerfEvent &event, const PerfEve
{ {
const uint numSamples = (event.timestamp() < 0) ? 0 : 1; const uint numSamples = (event.timestamp() < 0) ? 0 : 1;
m_stackBottom->samples += numSamples; m_stackBottom->samples += numSamples;
auto data = m_stackBottom.data(); auto data = m_stackBottom.get();
const QVector<int> &stack = event.frames(); const QVector<int> &stack = event.frames();
for (auto it = stack.rbegin(), end = stack.rend(); it != end; ++it) for (auto it = stack.rbegin(), end = stack.rend(); it != end; ++it)
data = pushChild(data, *it, numSamples); data = pushChild(data, *it, numSamples);
@@ -304,7 +304,7 @@ void PerfProfilerFlameGraphModel::finalize(PerfProfilerFlameGraphData *data)
data->swapStackBottom(m_stackBottom); data->swapStackBottom(m_stackBottom);
QQueue<Data *> nodes; QQueue<Data *> nodes;
nodes.enqueue(m_stackBottom.data()); nodes.enqueue(m_stackBottom.get());
while (!nodes.isEmpty()) { while (!nodes.isEmpty()) {
Data *node = nodes.dequeue(); Data *node = nodes.dequeue();
if (node->lastResourceChangeId < data->resourcePeakId()) { if (node->lastResourceChangeId < data->resourcePeakId()) {
@@ -325,12 +325,12 @@ void PerfProfilerFlameGraphModel::finalize(PerfProfilerFlameGraphData *data)
void PerfProfilerFlameGraphModel::clear(PerfProfilerFlameGraphData *data) void PerfProfilerFlameGraphModel::clear(PerfProfilerFlameGraphData *data)
{ {
beginResetModel(); beginResetModel();
if (m_offlineData.isNull()) { if (!m_offlineData) {
// We didn't finalize // We didn't finalize
data->clear(); data->clear();
m_offlineData.reset(data); m_offlineData.reset(data);
} else { } else {
QTC_CHECK(data == m_offlineData.data()); QTC_CHECK(data == m_offlineData.get());
} }
m_stackBottom.reset(new Data); m_stackBottom.reset(new Data);
endResetModel(); endResetModel();

View File

@@ -77,8 +77,8 @@ signals:
void gotoSourceLocation(QString file, int line, int column); void gotoSourceLocation(QString file, int line, int column);
private: private:
QScopedPointer<Data> m_stackBottom; std::unique_ptr<Data> m_stackBottom;
QScopedPointer<PerfProfilerFlameGraphData> m_offlineData; std::unique_ptr<PerfProfilerFlameGraphData> m_offlineData;
}; };
} // namespace Internal } // namespace Internal

View File

@@ -136,7 +136,7 @@ void PerfProfilerStatisticsMainModel::finalize(PerfProfilerStatisticsData *data)
resort(); resort();
QTC_ASSERT(data->isEmpty(), data->clear()); QTC_ASSERT(data->isEmpty(), data->clear());
QTC_CHECK(m_offlineData.isNull()); QTC_CHECK(!m_offlineData);
m_offlineData.reset(data); m_offlineData.reset(data);
} }
@@ -180,7 +180,7 @@ quint64 PerfProfilerStatisticsMainModel::address(int typeId) const
void PerfProfilerStatisticsMainModel::initialize() void PerfProfilerStatisticsMainModel::initialize()
{ {
// Make offline data unaccessible while we're loading events // Make offline data unaccessible while we're loading events
PerfProfilerStatisticsData *offline = m_offlineData.take(); PerfProfilerStatisticsData *offline = m_offlineData.release();
QTC_ASSERT(offline, return); QTC_ASSERT(offline, return);
QTC_ASSERT(offline->isEmpty(), offline->clear()); QTC_ASSERT(offline->isEmpty(), offline->clear());
} }
@@ -290,12 +290,12 @@ void PerfProfilerStatisticsMainModel::sort(int column, Qt::SortOrder order)
void PerfProfilerStatisticsMainModel::clear(PerfProfilerStatisticsData *data) void PerfProfilerStatisticsMainModel::clear(PerfProfilerStatisticsData *data)
{ {
beginResetModel(); beginResetModel();
if (m_offlineData.isNull()) { if (!m_offlineData) {
// We didn't finalize // We didn't finalize
data->clear(); data->clear();
m_offlineData.reset(data); m_offlineData.reset(data);
} else { } else {
QTC_CHECK(data == m_offlineData.data()); QTC_CHECK(data == m_offlineData.get());
} }
m_totalSamples = 0; m_totalSamples = 0;
m_data.clear(); m_data.clear();
@@ -335,7 +335,7 @@ PerfProfilerStatisticsMainModel::PerfProfilerStatisticsMainModel(QObject *parent
PerfProfilerStatisticsMainModel::~PerfProfilerStatisticsMainModel() PerfProfilerStatisticsMainModel::~PerfProfilerStatisticsMainModel()
{ {
// If the offline data isn't here, we're being deleted while loading something. That's unnice. // If the offline data isn't here, we're being deleted while loading something. That's unnice.
QTC_CHECK(!m_offlineData.isNull()); QTC_CHECK(m_offlineData);
} }
PerfProfilerStatisticsRelativesModel::PerfProfilerStatisticsRelativesModel( PerfProfilerStatisticsRelativesModel::PerfProfilerStatisticsRelativesModel(

View File

@@ -102,7 +102,7 @@ private:
qint64 m_endTime; qint64 m_endTime;
uint m_totalSamples; uint m_totalSamples;
QScopedPointer<PerfProfilerStatisticsData> m_offlineData; std::unique_ptr<PerfProfilerStatisticsData> m_offlineData;
}; };
class PerfProfilerStatisticsRelativesModel : public PerfProfilerStatisticsModel { class PerfProfilerStatisticsRelativesModel : public PerfProfilerStatisticsModel {