diff --git a/src/duckstation-qt/main.cpp b/src/duckstation-qt/main.cpp index 4df999202..c18137642 100644 --- a/src/duckstation-qt/main.cpp +++ b/src/duckstation-qt/main.cpp @@ -32,5 +32,7 @@ int main(int argc, char* argv[]) std::unique_ptr window = std::make_unique(host_interface.get()); window->show(); + host_interface->refreshGameList(); + return app.exec(); } diff --git a/src/duckstation-qt/qthostinterface.cpp b/src/duckstation-qt/qthostinterface.cpp index 90c0eae3e..fdcd785f2 100644 --- a/src/duckstation-qt/qthostinterface.cpp +++ b/src/duckstation-qt/qthostinterface.cpp @@ -12,6 +12,7 @@ #include "frontend-common/sdl_controller_interface.h" #include "mainwindow.h" #include "opengldisplaywidget.h" +#include "qtprogresscallback.h" #include "qtsettingsinterface.h" #include "qtutils.h" #include @@ -35,7 +36,6 @@ QtHostInterface::QtHostInterface(QObject* parent) qRegisterMetaType(); loadSettings(); - refreshGameList(); createThread(); } @@ -141,10 +141,14 @@ void QtHostInterface::loadSettings() void QtHostInterface::refreshGameList(bool invalidate_cache /* = false */, bool invalidate_database /* = false */) { + Assert(!isOnWorkerThread()); + std::lock_guard lock(m_qsettings_mutex); QtSettingsInterface si(m_qsettings); m_game_list->SetSearchDirectoriesFromSettings(si); - m_game_list->Refresh(invalidate_cache, invalidate_database); + + QtProgressCallback progress(m_main_window); + m_game_list->Refresh(invalidate_cache, invalidate_database, &progress); emit gameListRefreshed(); }