Don't sort resource list in resource inspector every time

This commit is contained in:
baldurk
2018-02-16 13:33:58 +00:00
parent c1da853854
commit dda5629426
3 changed files with 29 additions and 11 deletions
+26 -6
View File
@@ -299,8 +299,8 @@ void CaptureContext::LoadCaptureThreaded(const QString &captureFile, const QStri
m_StructuredFile = &r->GetStructuredFile();
m_ResourceList = r->GetResources();
for(ResourceDescription &res : m_ResourceList)
m_Resources[res.resourceId] = &res;
CacheResources();
m_BufferList = r->GetBuffers();
for(BufferDescription &b : m_BufferList)
@@ -375,6 +375,19 @@ void CaptureContext::LoadCaptureThreaded(const QString &captureFile, const QStri
m_CaptureLoaded = true;
}
void CaptureContext::CacheResources()
{
m_Resources.clear();
std::sort(m_ResourceList.begin(), m_ResourceList.end(),
[this](const ResourceDescription &a, const ResourceDescription &b) {
return GetResourceName(&a) < GetResourceName(&b);
});
for(ResourceDescription &res : m_ResourceList)
m_Resources[res.resourceId] = &res;
}
bool CaptureContext::PassEquivalent(const DrawcallDescription &a, const DrawcallDescription &b)
{
// executing command lists can have children
@@ -1194,19 +1207,24 @@ rdcstr CaptureContext::GetResourceName(ResourceId id)
if(id == ResourceId())
return tr("No Resource");
if(m_CustomNames.contains(id))
return m_CustomNames[id];
ResourceDescription *desc = GetResource(id);
if(desc)
return desc->name;
return GetResourceName(desc);
uint64_t num;
memcpy(&num, &id, sizeof(num));
return tr("Unknown Resource %1").arg(num);
}
rdcstr CaptureContext::GetResourceName(const ResourceDescription *desc)
{
if(m_CustomNames.contains(desc->resourceId))
return m_CustomNames[desc->resourceId];
return desc->name;
}
bool CaptureContext::IsAutogeneratedName(ResourceId id)
{
if(id == ResourceId())
@@ -1245,6 +1263,8 @@ void CaptureContext::SetResourceCustomName(ResourceId id, const rdcstr &name)
m_CaptureMods |= CaptureModifications::Renames;
m_MainWindow->captureModified();
CacheResources();
RefreshUIStatus({}, true, true);
}
+3
View File
@@ -277,6 +277,9 @@ private:
void SaveNotes();
void LoadNotes(const QString &data);
void CacheResources();
rdcstr GetResourceName(const ResourceDescription *desc);
float m_LoadProgress = 0.0f;
float m_PostloadProgress = 0.0f;
float UpdateLoadProgress();
-5
View File
@@ -113,8 +113,6 @@ ResourceInspector::ResourceInspector(ICaptureContext &ctx, QWidget *parent)
m_FilterModel->setSourceModel(m_ResourceModel);
m_FilterModel->setFilterCaseSensitivity(Qt::CaseInsensitive);
m_FilterModel->setFilterRole(FilterRole);
m_FilterModel->setSortCaseSensitivity(Qt::CaseInsensitive);
m_FilterModel->setSortRole(Qt::DisplayRole);
ui->resourceList->setModel(m_FilterModel);
@@ -166,7 +164,6 @@ void ResourceInspector::Inspect(ResourceId id)
m_Entries.clear();
m_ResourceModel->reset();
m_FilterModel->sort(0);
if(m_Ctx.HasResourceCustomName(id))
ui->resetName->show();
@@ -282,7 +279,6 @@ void ResourceInspector::OnCaptureLoaded()
ui->renameResource->setEnabled(true);
m_ResourceModel->reset();
m_FilterModel->sort(0);
}
void ResourceInspector::OnCaptureClosed()
@@ -308,7 +304,6 @@ void ResourceInspector::OnEventChanged(uint32_t eventId)
Inspect(m_Resource);
m_ResourceModel->reset();
m_FilterModel->sort(0);
}
void ResourceInspector::on_renameResource_clicked()