From 567fe019ac21ee78a07beae1a387ab5688e7f97b Mon Sep 17 00:00:00 2001 From: isanae <14251494+isanae@users.noreply.github.com> Date: Fri, 14 Feb 2020 01:53:59 -0500 Subject: removed some unnecessary counters delete old structure in thread --- src/directoryrefresher.cpp | 69 +++++++++++++++++++--------------------------- 1 file changed, 29 insertions(+), 40 deletions(-) (limited to 'src/directoryrefresher.cpp') diff --git a/src/directoryrefresher.cpp b/src/directoryrefresher.cpp index a59ddf9d..cb5bfc5b 100644 --- a/src/directoryrefresher.cpp +++ b/src/directoryrefresher.cpp @@ -48,7 +48,7 @@ DirectoryRefresher::~DirectoryRefresher() delete m_DirectoryStructure; } -DirectoryEntry *DirectoryRefresher::getDirectoryStructure() +DirectoryEntry *DirectoryRefresher::stealDirectoryStructure() { QMutexLocker locker(&m_RefreshLock); DirectoryEntry *result = m_DirectoryStructure; @@ -279,58 +279,50 @@ void DirectoryRefresher::addMultipleModsFilesToStructure( g_threads.setMax(m_threadCount); - { - TimeThis tt("walk dirs"); - - for (std::size_t i=0; i(i + 1); + for (std::size_t i=0; i(i + 1); - stats[i].mod = entries[i].modName.toStdString(); + stats[i].mod = entries[i].modName.toStdString(); - try - { - if (e.stealFiles.length() > 0) { - stealModFilesIntoStructure( - directoryStructure, e.modName, prio, e.absolutePath, e.stealFiles); - } else { - auto& mt = g_threads.request(); - - mt.ds = directoryStructure; - mt.modName = entries[i].modName.toStdWString(); - mt.path = QDir::toNativeSeparators(e.absolutePath).toStdWString(); - mt.prio = prio; - mt.stats = &stats[i]; - - mt.wakeup(); - } - } catch (const std::exception& ex) { - emit error(tr("failed to read mod (%1): %2").arg(e.modName, ex.what())); - } - - if (emitProgress) { - emit progress((static_cast(i) * 100) / static_cast(entries.size()) + 1); + try + { + if (e.stealFiles.length() > 0) { + stealModFilesIntoStructure( + directoryStructure, e.modName, prio, e.absolutePath, e.stealFiles); + } else { + auto& mt = g_threads.request(); + + mt.ds = directoryStructure; + mt.modName = entries[i].modName.toStdWString(); + mt.path = QDir::toNativeSeparators(e.absolutePath).toStdWString(); + mt.prio = prio; + mt.stats = &stats[i]; + + mt.wakeup(); } + } catch (const std::exception& ex) { + emit error(tr("failed to read mod (%1): %2").arg(e.modName, ex.what())); } - g_threads.waitForAll(); + if (emitProgress) { + emit progress((static_cast(i) * 100) / static_cast(entries.size()) + 1); + } } + g_threads.waitForAll(); + dumpStats(stats); } -namespace MOShared{ void logcounts(std::string w); } - void DirectoryRefresher::refresh() { SetThisThreadName("DirectoryRefresher"); + TimeThis tt("refresh"); for (int i=0; i<1; ++i) { QMutexLocker locker(&m_RefreshLock); - - //logcounts("before delete"); delete m_DirectoryStructure; - //logcounts("after delete"); m_DirectoryStructure = new DirectoryEntry(L"data", nullptr, 0); @@ -355,9 +347,6 @@ void DirectoryRefresher::refresh() cleanStructure(m_DirectoryStructure); } - emit progress(100); - + emit progress(100); emit refreshed(); - - //logcounts("after refresh"); } -- cgit v1.3.1