qt: Add game launch stress test functionality behind new ENABLE_DEVELOPER_OPTIONS CMake option (#1442)

* qt: Implemented game launch stress test

* qt: Hide stress test behind ENABLE_DEVELOPER_OPTIONS CMake option
This commit is contained in:
OpenSauce 2025-10-21 15:29:15 +00:00 committed by GitHub
parent 1f483e1d33
commit 67f6735f02
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 30 additions and 0 deletions

View File

@ -121,6 +121,8 @@ option(ENABLE_MICROPROFILE "Enables microprofile capabilities" OFF)
option(ENABLE_SSE42 "Enable SSE4.2 optimizations on x86_64" ON) option(ENABLE_SSE42 "Enable SSE4.2 optimizations on x86_64" ON)
option(ENABLE_DEVELOPER_OPTIONS "Enable functionality targeted at emulator developers" OFF)
# Compile options # Compile options
CMAKE_DEPENDENT_OPTION(COMPILE_WITH_DWARF "Add DWARF debugging information" ${IS_DEBUG_BUILD} "MINGW" OFF) CMAKE_DEPENDENT_OPTION(COMPILE_WITH_DWARF "Add DWARF debugging information" ${IS_DEBUG_BUILD} "MINGW" OFF)
option(ENABLE_LTO "Enable link time optimization" ${DEFAULT_ENABLE_LTO}) option(ENABLE_LTO "Enable link time optimization" ${DEFAULT_ENABLE_LTO})

View File

@ -174,6 +174,9 @@ endif()
if(ENABLE_VULKAN) if(ENABLE_VULKAN)
add_compile_definitions(ENABLE_VULKAN) add_compile_definitions(ENABLE_VULKAN)
endif() endif()
if(ENABLE_DEVELOPER_OPTIONS)
add_compile_definitions(ENABLE_DEVELOPER_OPTIONS)
endif()
add_subdirectory(common) add_subdirectory(common)
add_subdirectory(core) add_subdirectory(core)

View File

@ -980,6 +980,10 @@ void GMainWindow::ConnectWidgetEvents() {
connect(game_list, &GameList::ShowList, this, &GMainWindow::OnGameListShowList); connect(game_list, &GameList::ShowList, this, &GMainWindow::OnGameListShowList);
connect(game_list, &GameList::PopulatingCompleted, this, connect(game_list, &GameList::PopulatingCompleted, this,
[this] { multiplayer_state->UpdateGameList(game_list->GetModel()); }); [this] { multiplayer_state->UpdateGameList(game_list->GetModel()); });
#ifdef ENABLE_DEVELOPER_OPTIONS
connect(game_list, &GameList::StartingLaunchStressTest, this,
&GMainWindow::StartLaunchStressTest);
#endif
connect(game_list, &GameList::OpenPerGameGeneralRequested, this, connect(game_list, &GameList::OpenPerGameGeneralRequested, this,
&GMainWindow::OnGameListOpenPerGameProperties); &GMainWindow::OnGameListOpenPerGameProperties);
@ -1576,6 +1580,16 @@ void GMainWindow::ShutdownGame() {
secondary_window->ReleaseRenderTarget(); secondary_window->ReleaseRenderTarget();
} }
void GMainWindow::StartLaunchStressTest(const QString& game_path) {
QThreadPool::globalInstance()->start([this, game_path] {
do {
ui->action_Stop->trigger();
emit game_list->GameChosen(game_path);
QThread::sleep(2);
} while (emulation_running);
});
}
void GMainWindow::StoreRecentFile(const QString& filename) { void GMainWindow::StoreRecentFile(const QString& filename) {
UISettings::values.recent_files.prepend(filename); UISettings::values.recent_files.prepend(filename);
UISettings::values.recent_files.removeDuplicates(); UISettings::values.recent_files.removeDuplicates();

View File

@ -306,6 +306,7 @@ private slots:
#endif #endif
void OnSwitchDiskResources(VideoCore::LoadCallbackStage stage, std::size_t value, void OnSwitchDiskResources(VideoCore::LoadCallbackStage stage, std::size_t value,
std::size_t total); std::size_t total);
void StartLaunchStressTest(const QString& game_path);
private: private:
Q_INVOKABLE void OnMoviePlaybackCompleted(); Q_INVOKABLE void OnMoviePlaybackCompleted();

View File

@ -644,6 +644,11 @@ void GameList::AddGamePopup(QMenu& context_menu, const QString& path, const QStr
shortcut_menu->addAction(tr("Add to Applications Menu")); shortcut_menu->addAction(tr("Add to Applications Menu"));
#endif #endif
#ifdef ENABLE_DEVELOPER_OPTIONS
context_menu.addSeparator();
QAction* stress_test_launch = context_menu.addAction(tr("Stress Test: App Launch"));
#endif
context_menu.addSeparator(); context_menu.addSeparator();
QAction* properties = context_menu.addAction(tr("Properties")); QAction* properties = context_menu.addAction(tr("Properties"));
@ -755,6 +760,10 @@ void GameList::AddGamePopup(QMenu& context_menu, const QString& path, const QStr
[this, path, program_id] { emit DumpRomFSRequested(path, program_id); }); [this, path, program_id] { emit DumpRomFSRequested(path, program_id); });
connect(remove_play_time_data, &QAction::triggered, connect(remove_play_time_data, &QAction::triggered,
[this, program_id]() { emit RemovePlayTimeRequested(program_id); }); [this, program_id]() { emit RemovePlayTimeRequested(program_id); });
#ifdef ENABLE_DEVELOPER_OPTIONS
connect(stress_test_launch, &QAction::triggered,
[this, path]() { emit StartingLaunchStressTest(path); });
#endif
connect(properties, &QAction::triggered, this, connect(properties, &QAction::triggered, this,
[this, path]() { emit OpenPerGameGeneralRequested(path); }); [this, path]() { emit OpenPerGameGeneralRequested(path); });
connect(open_shader_cache_location, &QAction::triggered, this, [this, program_id] { connect(open_shader_cache_location, &QAction::triggered, this, [this, program_id] {

View File

@ -107,6 +107,7 @@ signals:
void AddDirectory(); void AddDirectory();
void ShowList(bool show); void ShowList(bool show);
void PopulatingCompleted(); void PopulatingCompleted();
void StartingLaunchStressTest(const QString& game_path);
private slots: private slots:
void OnItemExpanded(const QModelIndex& item); void OnItemExpanded(const QModelIndex& item);