mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-10-22 16:09:06 +00:00
Merge pull request #13794 from Sintendo/doouble-lookup
Avoid map/set double lookups
This commit is contained in:
commit
06e05e0f90
15 changed files with 69 additions and 74 deletions
|
@ -251,17 +251,18 @@ static std::unique_ptr<QDirIterator> GetIterator(const QString& dir)
|
|||
void GameTracker::RemoveDirectoryInternal(const QString& dir)
|
||||
{
|
||||
RemovePath(dir);
|
||||
auto it = GetIterator(dir);
|
||||
while (it->hasNext())
|
||||
const auto dir_it = GetIterator(dir);
|
||||
while (dir_it->hasNext())
|
||||
{
|
||||
QString path = QFileInfo(it->next()).canonicalFilePath();
|
||||
if (m_tracked_files.contains(path))
|
||||
QString path = QFileInfo(dir_it->next()).canonicalFilePath();
|
||||
if (const auto it = m_tracked_files.find(path); it != m_tracked_files.end())
|
||||
{
|
||||
m_tracked_files[path].remove(dir);
|
||||
if (m_tracked_files[path].empty())
|
||||
auto& set = *it;
|
||||
set.remove(dir);
|
||||
if (set.isEmpty())
|
||||
{
|
||||
RemovePath(path);
|
||||
m_tracked_files.remove(path);
|
||||
m_tracked_files.erase(it);
|
||||
if (m_started)
|
||||
emit GameRemoved(path.toStdString());
|
||||
}
|
||||
|
@ -271,16 +272,14 @@ void GameTracker::RemoveDirectoryInternal(const QString& dir)
|
|||
|
||||
void GameTracker::UpdateDirectoryInternal(const QString& dir)
|
||||
{
|
||||
auto it = GetIterator(dir);
|
||||
while (it->hasNext() && !m_processing_halted)
|
||||
const auto dir_it = GetIterator(dir);
|
||||
while (dir_it->hasNext() && !m_processing_halted)
|
||||
{
|
||||
QString path = QFileInfo(it->next()).canonicalFilePath();
|
||||
QString path = QFileInfo(dir_it->next()).canonicalFilePath();
|
||||
|
||||
if (m_tracked_files.contains(path))
|
||||
if (const auto it = m_tracked_files.find(path); it != m_tracked_files.end())
|
||||
{
|
||||
auto& tracked_file = m_tracked_files[path];
|
||||
if (!tracked_file.contains(dir))
|
||||
tracked_file.insert(dir);
|
||||
it->insert(dir);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -339,8 +338,7 @@ QSet<QString> GameTracker::FindMissingFiles(const QString& dir)
|
|||
while (it->hasNext())
|
||||
{
|
||||
QString path = QFileInfo(it->next()).canonicalFilePath();
|
||||
if (m_tracked_files.contains(path))
|
||||
missing_files.remove(path);
|
||||
m_tracked_files.remove(path);
|
||||
}
|
||||
|
||||
return missing_files;
|
||||
|
|
|
@ -656,8 +656,9 @@ void NetPlayDialog::UpdateGUI()
|
|||
|
||||
auto* name_item = new QTableWidgetItem(QString::fromStdString(p->name));
|
||||
name_item->setToolTip(name_item->text());
|
||||
const auto& status_info = player_status.contains(p->game_status) ?
|
||||
player_status.at(p->game_status) :
|
||||
const auto it = player_status.find(p->game_status);
|
||||
const auto& status_info = it != player_status.end() ?
|
||||
it->second :
|
||||
std::make_pair(QStringLiteral("?"), QStringLiteral("?"));
|
||||
auto* status_item = new QTableWidgetItem(status_info.first);
|
||||
status_item->setToolTip(status_info.second);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue