From 7152f4c7482e32ccda06615638b51757a38d91df Mon Sep 17 00:00:00 2001 From: James Rowe Date: Sat, 21 Sep 2019 21:39:01 -0600 Subject: [PATCH] Add FPS to SDL title bar Also fix a small issue with incorrect shutdown ordering in SDL. Previously the system would still be running so the telemetry task didn't launch and detached_tasks would assert(count == 0) --- src/citra/citra.cpp | 4 ++-- src/citra/emu_window/emu_window_sdl2.cpp | 11 +++++++++++ src/citra/emu_window/emu_window_sdl2.h | 3 +++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/citra/citra.cpp b/src/citra/citra.cpp index 057dd16f4e..c9a6127f7b 100644 --- a/src/citra/citra.cpp +++ b/src/citra/citra.cpp @@ -346,8 +346,6 @@ int main(int argc, char** argv) { Core::System& system{Core::System::GetInstance()}; - SCOPE_EXIT({ system.Shutdown(); }); - const Core::System::ResultStatus load_result{system.Load(*emu_window, filepath)}; switch (load_result) { @@ -418,6 +416,8 @@ int main(int argc, char** argv) { system.VideoDumper().StopDumping(); } + system.Shutdown(); + detached_tasks.WaitForAllTasks(); return 0; } diff --git a/src/citra/emu_window/emu_window_sdl2.cpp b/src/citra/emu_window/emu_window_sdl2.cpp index ecd9ee20dd..34d3d2fdb9 100644 --- a/src/citra/emu_window/emu_window_sdl2.cpp +++ b/src/citra/emu_window/emu_window_sdl2.cpp @@ -13,6 +13,7 @@ #include "common/logging/log.h" #include "common/scm_rev.h" #include "core/3ds.h" +#include "core/core.h" #include "core/settings.h" #include "input_common/keyboard.h" #include "input_common/main.h" @@ -242,6 +243,16 @@ void EmuWindow_SDL2::PollEvents() { break; } } + + const u32 current_time = SDL_GetTicks(); + if (current_time > last_time + 2000) { + const auto results = Core::System::GetInstance().GetAndResetPerfStats(); + const auto title = fmt::format( + "Citra {} | {}-{} | FPS: {:.0f} ({:.0%})", Common::g_build_fullname, + Common::g_scm_branch, Common::g_scm_desc, results.game_fps, results.emulation_speed); + SDL_SetWindowTitle(render_window, title.c_str()); + last_time = current_time; + } } void EmuWindow_SDL2::MakeCurrent() { diff --git a/src/citra/emu_window/emu_window_sdl2.h b/src/citra/emu_window/emu_window_sdl2.h index 12af0e5247..3462c5bd94 100644 --- a/src/citra/emu_window/emu_window_sdl2.h +++ b/src/citra/emu_window/emu_window_sdl2.h @@ -70,4 +70,7 @@ private: using SDL_GLContext = void*; /// The OpenGL context associated with the window SDL_GLContext gl_context; + + /// Keeps track of how often to update the title bar during gameplay + u32 last_time = 0; };