From 9d5be59291f5bc88d36e89dc62e89dcbcf389d6f Mon Sep 17 00:00:00 2001 From: Revix <30447649+revix-0@users.noreply.github.com> Date: Wed, 1 Jun 2022 09:00:29 +0200 Subject: [PATCH 01/11] add info on render scale in help > about --- ui/xui/main-menu.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index 06bdaade7a0..e2d0d6338a7 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -794,24 +794,25 @@ void MainMenuSystemView::Draw() void MainMenuAboutView::Draw() { - static const char *build_info_text = NULL; + const char *build_info_text = NULL; if (build_info_text == NULL) { build_info_text = g_strdup_printf( "Version: %s\nBranch: %s\nCommit: %s\nDate: %s", xemu_version, xemu_branch, xemu_commit, xemu_date); } - static const char *sys_info_text = NULL; + const char *sys_info_text = NULL; if (sys_info_text == NULL) { const char *gl_shader_version = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); const char *gl_version = (const char*)glGetString(GL_VERSION); const char *gl_renderer = (const char*)glGetString(GL_RENDERER); const char *gl_vendor = (const char*)glGetString(GL_VENDOR); + sys_info_text = g_strdup_printf( "CPU: %s\nOS Platform: %s\nOS Version: %s\nManufacturer: %s\n" - "GPU Model: %s\nDriver: %s\nShader: %s", + "GPU Model: %s\nDriver: %s\nShader: %s\nInternal Resolution:%dx \n", xemu_get_cpu_info(), xemu_get_os_platform(), xemu_get_os_info(), gl_vendor, - gl_renderer, gl_version, gl_shader_version); + gl_renderer, gl_version, gl_shader_version, nv2a_get_surface_scale_factor()); } static uint32_t time_start = 0; From 1cbf27a16c0fc9dda28e05891d849679fe1258c2 Mon Sep 17 00:00:00 2001 From: Revix <30447649+revix-0@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:54:42 +0200 Subject: [PATCH 02/11] Add screen resolution in about window --- ui/xui/main-menu.cc | 8 +++++--- ui/xui/reporting.cc | 1 + ui/xui/reporting.hh | 1 + 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index e2d0d6338a7..ec0b65f3822 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -807,12 +807,14 @@ void MainMenuAboutView::Draw() const char *gl_version = (const char*)glGetString(GL_VERSION); const char *gl_renderer = (const char*)glGetString(GL_RENDERER); const char *gl_vendor = (const char*)glGetString(GL_VENDOR); - + SDL_DisplayMode DM; + SDL_GetCurrentDisplayMode(0, &DM); sys_info_text = g_strdup_printf( "CPU: %s\nOS Platform: %s\nOS Version: %s\nManufacturer: %s\n" - "GPU Model: %s\nDriver: %s\nShader: %s\nInternal Resolution:%dx \n", + "GPU Model: %s\nDriver: %s\nShader: %s\nScaling: %dx\n" + "Resolution: %dx%d\n", xemu_get_cpu_info(), xemu_get_os_platform(), xemu_get_os_info(), gl_vendor, - gl_renderer, gl_version, gl_shader_version, nv2a_get_surface_scale_factor()); + gl_renderer, gl_version, gl_shader_version, nv2a_get_surface_scale_factor(), DM.w, DM.h); } static uint32_t time_start = 0; diff --git a/ui/xui/reporting.cc b/ui/xui/reporting.cc index dc146475729..afaf4456e11 100644 --- a/ui/xui/reporting.cc +++ b/ui/xui/reporting.cc @@ -45,6 +45,7 @@ const std::string &CompatibilityReport::GetSerializedReport() {"xemu_branch", xemu_branch}, {"xemu_commit", xemu_commit}, {"xemu_date", xemu_date}, + {"xemu_rendering_scale", xemu_rendering_scale}, {"os_platform", os_platform}, {"os_version", os_version}, {"cpu", cpu}, diff --git a/ui/xui/reporting.hh b/ui/xui/reporting.hh index f823bc4c3c6..8e788c0dbf4 100644 --- a/ui/xui/reporting.hh +++ b/ui/xui/reporting.hh @@ -31,6 +31,7 @@ public: std::string xemu_branch; std::string xemu_commit; std::string xemu_date; + std::string xemu_rendering_scale; std::string os_platform; std::string os_version; std::string cpu; From bd1a0145b32b4a38bb9b248655e7726e5a6df075 Mon Sep 17 00:00:00 2001 From: Revix <30447649+revix-0@users.noreply.github.com> Date: Wed, 1 Jun 2022 15:59:51 +0200 Subject: [PATCH 03/11] add temporary comments in reporting.hh --- ui/xui/reporting.hh | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/ui/xui/reporting.hh b/ui/xui/reporting.hh index 8e788c0dbf4..db20b16c9c8 100644 --- a/ui/xui/reporting.hh +++ b/ui/xui/reporting.hh @@ -31,7 +31,10 @@ public: std::string xemu_branch; std::string xemu_commit; std::string xemu_date; - std::string xemu_rendering_scale; + //not sure if report accepts unsigned int + unsigned int xemu_rendering_scale; + //is it ok to save the data from SDL_GetCurrentDisplayMode in main_menu.cc directly into the class? same as the rendering scale so the data will be filled + int width, height; std::string os_platform; std::string os_version; std::string cpu; From 7884dfa3dfe7604e83af449c30e82cbd41b05e91 Mon Sep 17 00:00:00 2001 From: Revix <30447649+revix-0@users.noreply.github.com> Date: Thu, 2 Jun 2022 20:42:37 +0200 Subject: [PATCH 04/11] ui: print via non static buffer, add vars in JSON report --- ui/xui/main-menu.cc | 17 +++++++++-------- ui/xui/reporting.cc | 1 + ui/xui/reporting.hh | 2 -- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index ec0b65f3822..b218decc389 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -794,14 +794,14 @@ void MainMenuSystemView::Draw() void MainMenuAboutView::Draw() { - const char *build_info_text = NULL; + static const char *build_info_text = NULL; if (build_info_text == NULL) { build_info_text = g_strdup_printf( "Version: %s\nBranch: %s\nCommit: %s\nDate: %s", xemu_version, xemu_branch, xemu_commit, xemu_date); } - const char *sys_info_text = NULL; + static const char *sys_info_text = NULL; if (sys_info_text == NULL) { const char *gl_shader_version = (const char*)glGetString(GL_SHADING_LANGUAGE_VERSION); const char *gl_version = (const char*)glGetString(GL_VERSION); @@ -811,11 +811,11 @@ void MainMenuAboutView::Draw() SDL_GetCurrentDisplayMode(0, &DM); sys_info_text = g_strdup_printf( "CPU: %s\nOS Platform: %s\nOS Version: %s\nManufacturer: %s\n" - "GPU Model: %s\nDriver: %s\nShader: %s\nScaling: %dx\n" - "Resolution: %dx%d\n", + "GPU Model: %s\nDriver: %s\nShader: %s\n" "Resolution: %dx%d\n", xemu_get_cpu_info(), xemu_get_os_platform(), xemu_get_os_info(), gl_vendor, - gl_renderer, gl_version, gl_shader_version, nv2a_get_surface_scale_factor(), DM.w, DM.h); + gl_renderer, gl_version, gl_shader_version, DM.w, DM.h); } + char *content = g_strdup_printf("%sScaling: %dx", sys_info_text, nv2a_get_surface_scale_factor()); static uint32_t time_start = 0; if (ImGui::IsWindowAppearing()) { @@ -853,11 +853,12 @@ void MainMenuAboutView::Draw() SectionTitle("System Information"); ImGui::PushFont(g_font_mgr.m_fixed_width_font); - ImGui::InputTextMultiline("###systeminformation", (char *)sys_info_text, - strlen(sys_info_text), - ImVec2(-FLT_MIN, ImGui::GetTextLineHeight() * 8), + ImGui::InputTextMultiline("###systeminformation", (char *)content, + strlen(content), + ImVec2(-FLT_MIN, ImGui::GetTextLineHeight() * 10), ImGuiInputTextFlags_ReadOnly); ImGui::PopFont(); + free(content); SectionTitle("Community"); diff --git a/ui/xui/reporting.cc b/ui/xui/reporting.cc index afaf4456e11..4c1d3ae345b 100644 --- a/ui/xui/reporting.cc +++ b/ui/xui/reporting.cc @@ -46,6 +46,7 @@ const std::string &CompatibilityReport::GetSerializedReport() {"xemu_commit", xemu_commit}, {"xemu_date", xemu_date}, {"xemu_rendering_scale", xemu_rendering_scale}, + {"Screen Resolution:" width, height}, {"os_platform", os_platform}, {"os_version", os_version}, {"cpu", cpu}, diff --git a/ui/xui/reporting.hh b/ui/xui/reporting.hh index db20b16c9c8..33e81d9c3fd 100644 --- a/ui/xui/reporting.hh +++ b/ui/xui/reporting.hh @@ -31,9 +31,7 @@ public: std::string xemu_branch; std::string xemu_commit; std::string xemu_date; - //not sure if report accepts unsigned int unsigned int xemu_rendering_scale; - //is it ok to save the data from SDL_GetCurrentDisplayMode in main_menu.cc directly into the class? same as the rendering scale so the data will be filled int width, height; std::string os_platform; std::string os_version; From 4782f38e54a1e4466dbeb61166b108da21813533 Mon Sep 17 00:00:00 2001 From: Revix <30447649+revix-0@users.noreply.github.com> Date: Fri, 3 Jun 2022 11:49:19 +0200 Subject: [PATCH 05/11] Adjust JSON vars, put res info in dynamic buffer --- ui/xui/main-menu.cc | 18 ++++++++++-------- ui/xui/reporting.cc | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index b218decc389..543e528e1be 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -794,7 +794,7 @@ void MainMenuSystemView::Draw() void MainMenuAboutView::Draw() { - static const char *build_info_text = NULL; + static const char *build_info_text = NULL; if (build_info_text == NULL) { build_info_text = g_strdup_printf( "Version: %s\nBranch: %s\nCommit: %s\nDate: %s", @@ -807,15 +807,17 @@ void MainMenuAboutView::Draw() const char *gl_version = (const char*)glGetString(GL_VERSION); const char *gl_renderer = (const char*)glGetString(GL_RENDERER); const char *gl_vendor = (const char*)glGetString(GL_VENDOR); - SDL_DisplayMode DM; - SDL_GetCurrentDisplayMode(0, &DM); sys_info_text = g_strdup_printf( "CPU: %s\nOS Platform: %s\nOS Version: %s\nManufacturer: %s\n" - "GPU Model: %s\nDriver: %s\nShader: %s\n" "Resolution: %dx%d\n", + "GPU Model: %s\nDriver: %s\nShader: %s\n", xemu_get_cpu_info(), xemu_get_os_platform(), xemu_get_os_info(), gl_vendor, - gl_renderer, gl_version, gl_shader_version, DM.w, DM.h); + gl_renderer, gl_version, gl_shader_version); } - char *content = g_strdup_printf("%sScaling: %dx", sys_info_text, nv2a_get_surface_scale_factor()); + SDL_DisplayMode DM; + SDL_GetCurrentDisplayMode(0, &DM); + + char *content = g_strdup_printf("%sScaling: %dx\n" "Resolution: %dx%d", + sys_info_text, nv2a_get_surface_scale_factor(), DM.w, DM.h); static uint32_t time_start = 0; if (ImGui::IsWindowAppearing()) { @@ -853,12 +855,12 @@ void MainMenuAboutView::Draw() SectionTitle("System Information"); ImGui::PushFont(g_font_mgr.m_fixed_width_font); - ImGui::InputTextMultiline("###systeminformation", (char *)content, + ImGui::InputTextMultiline("###systeminformation", content, strlen(content), ImVec2(-FLT_MIN, ImGui::GetTextLineHeight() * 10), ImGuiInputTextFlags_ReadOnly); ImGui::PopFont(); - free(content); + g_free(content); SectionTitle("Community"); diff --git a/ui/xui/reporting.cc b/ui/xui/reporting.cc index 4c1d3ae345b..c1d313059f9 100644 --- a/ui/xui/reporting.cc +++ b/ui/xui/reporting.cc @@ -46,7 +46,7 @@ const std::string &CompatibilityReport::GetSerializedReport() {"xemu_commit", xemu_commit}, {"xemu_date", xemu_date}, {"xemu_rendering_scale", xemu_rendering_scale}, - {"Screen Resolution:" width, height}, + {"Screen Resolution:", width, height}, {"os_platform", os_platform}, {"os_version", os_version}, {"cpu", cpu}, From 22bea2720431e51b673bf94239cc30b03a89392c Mon Sep 17 00:00:00 2001 From: Revix-0 <30447649+revix-0@users.noreply.github.com> Date: Sun, 12 Jun 2022 11:50:12 +0200 Subject: [PATCH 06/11] Add display mode to about window, remove JSON reporting --- ui/xui/main-menu.cc | 31 +++++++++++++++++++++++++------ ui/xui/reporting.cc | 2 -- ui/xui/reporting.hh | 2 -- 3 files changed, 25 insertions(+), 10 deletions(-) diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index 543e528e1be..eea5d430356 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -792,6 +792,24 @@ void MainMenuSystemView::Draw() } } +static const char *get_display_mode(void) +{ + const char *display_mode; + + if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_SCALE_16_9) { + display_mode = "Scale (Widescreen 16:9)"; + } else if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_SCALE_4_3) { + display_mode = "Scale (4:3)"; + } else if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_SCALE) { + display_mode = "Scale"; + } else if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_CENTER) { + display_mode = "Center"; + } else if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_STRETCH) { + display_mode = "Stretch"; + } + return display_mode; +} + void MainMenuAboutView::Draw() { static const char *build_info_text = NULL; @@ -813,11 +831,12 @@ void MainMenuAboutView::Draw() xemu_get_cpu_info(), xemu_get_os_platform(), xemu_get_os_info(), gl_vendor, gl_renderer, gl_version, gl_shader_version); } - SDL_DisplayMode DM; - SDL_GetCurrentDisplayMode(0, &DM); - - char *content = g_strdup_printf("%sScaling: %dx\n" "Resolution: %dx%d", - sys_info_text, nv2a_get_surface_scale_factor(), DM.w, DM.h); + + //TODO: get real time window pixels from main window resolution. + char *content = g_strdup_printf("%sScaling: %dx\n" "Resolution: %dx%d\n" + "Display Mode: %s", + sys_info_text, nv2a_get_surface_scale_factor(), + NULL, NULL, get_display_mode()); static uint32_t time_start = 0; if (ImGui::IsWindowAppearing()) { @@ -857,7 +876,7 @@ void MainMenuAboutView::Draw() ImGui::PushFont(g_font_mgr.m_fixed_width_font); ImGui::InputTextMultiline("###systeminformation", content, strlen(content), - ImVec2(-FLT_MIN, ImGui::GetTextLineHeight() * 10), + ImVec2(-FLT_MIN, ImGui::GetTextLineHeight() * 11), ImGuiInputTextFlags_ReadOnly); ImGui::PopFont(); g_free(content); diff --git a/ui/xui/reporting.cc b/ui/xui/reporting.cc index c1d313059f9..dc146475729 100644 --- a/ui/xui/reporting.cc +++ b/ui/xui/reporting.cc @@ -45,8 +45,6 @@ const std::string &CompatibilityReport::GetSerializedReport() {"xemu_branch", xemu_branch}, {"xemu_commit", xemu_commit}, {"xemu_date", xemu_date}, - {"xemu_rendering_scale", xemu_rendering_scale}, - {"Screen Resolution:", width, height}, {"os_platform", os_platform}, {"os_version", os_version}, {"cpu", cpu}, diff --git a/ui/xui/reporting.hh b/ui/xui/reporting.hh index 33e81d9c3fd..f823bc4c3c6 100644 --- a/ui/xui/reporting.hh +++ b/ui/xui/reporting.hh @@ -31,8 +31,6 @@ public: std::string xemu_branch; std::string xemu_commit; std::string xemu_date; - unsigned int xemu_rendering_scale; - int width, height; std::string os_platform; std::string os_version; std::string cpu; From c6615d505490982e8e6eb45f621ce1f8828fdff6 Mon Sep 17 00:00:00 2001 From: Revix-0 <30447649+revix-0@users.noreply.github.com> Date: Sun, 12 Jun 2022 11:54:12 +0200 Subject: [PATCH 07/11] remove string join in printf --- ui/xui/main-menu.cc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index eea5d430356..725b76caa7b 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -833,8 +833,7 @@ void MainMenuAboutView::Draw() } //TODO: get real time window pixels from main window resolution. - char *content = g_strdup_printf("%sScaling: %dx\n" "Resolution: %dx%d\n" - "Display Mode: %s", + char *content = g_strdup_printf("%sScaling: %dx\nResolution: %dx%d\nDisplay Mode: %s", sys_info_text, nv2a_get_surface_scale_factor(), NULL, NULL, get_display_mode()); From 11aefd9aadb912c0e86169c8afdfba5af88ac0c7 Mon Sep 17 00:00:00 2001 From: Revix-0 <30447649+revix-0@users.noreply.github.com> Date: Wed, 15 Jun 2022 21:20:24 +0200 Subject: [PATCH 08/11] Add window resolution in about window --- ui/xemu.c | 5 +++++ ui/xui/main-menu.cc | 27 +++++++++------------------ ui/xui/xemu-hud.h | 6 ++++++ 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/ui/xemu.c b/ui/xemu.c index 5f86b9bda9d..6f5632648b1 100644 --- a/ui/xemu.c +++ b/ui/xemu.c @@ -198,6 +198,11 @@ void sdl2_window_resize(struct sdl2_console *scon) surface_height(scon->surface)); } +void xemu_get_window_size(window_data *data) +{ + SDL_GetWindowSize(m_window, &data->width, &data->height); +} + static void sdl2_redraw(struct sdl2_console *scon) { if (scon->opengl) { diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index 725b76caa7b..360f8a1a459 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -27,6 +27,7 @@ #include "misc.hh" #include "gl-helpers.hh" #include "reporting.hh" +#include "popup-menu.hh" #include "../xemu-input.h" #include "../xemu-notifications.h" @@ -792,22 +793,12 @@ void MainMenuSystemView::Draw() } } -static const char *get_display_mode(void) +static const char *GetDisplayMode() { - const char *display_mode; - - if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_SCALE_16_9) { - display_mode = "Scale (Widescreen 16:9)"; - } else if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_SCALE_4_3) { - display_mode = "Scale (4:3)"; - } else if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_SCALE) { - display_mode = "Scale"; - } else if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_CENTER) { - display_mode = "Center"; - } else if (g_config.display.ui.fit == CONFIG_DISPLAY_UI_FIT_STRETCH) { - display_mode = "Stretch"; - } - return display_mode; + const char *values[] = { + "Center", "Scale", "Scale (Widescreen 16:9)", "Scale (4:3)", "Stretch" + }; + return values[g_config.display.ui.fit]; } void MainMenuAboutView::Draw() @@ -831,11 +822,11 @@ void MainMenuAboutView::Draw() xemu_get_cpu_info(), xemu_get_os_platform(), xemu_get_os_info(), gl_vendor, gl_renderer, gl_version, gl_shader_version); } - - //TODO: get real time window pixels from main window resolution. + window_data data; + xemu_get_window_size(&data); char *content = g_strdup_printf("%sScaling: %dx\nResolution: %dx%d\nDisplay Mode: %s", sys_info_text, nv2a_get_surface_scale_factor(), - NULL, NULL, get_display_mode()); + data.width, data.height, GetDisplayMode()); static uint32_t time_start = 0; if (ImGui::IsWindowAppearing()) { diff --git a/ui/xui/xemu-hud.h b/ui/xui/xemu-hud.h index a510c85bf61..bacf4f01dd9 100644 --- a/ui/xui/xemu-hud.h +++ b/ui/xui/xemu-hud.h @@ -35,6 +35,12 @@ void xemu_monitor_init(void); void xemu_toggle_fullscreen(void); void xemu_eject_disc(void); void xemu_load_disc(const char *path); +typedef struct window_data +{ + int width, height; +}window_data; + +void xemu_get_window_size(window_data *data); // Implemented in xemu_hud.cc void xemu_hud_init(SDL_Window *window, void *sdl_gl_context); From 74ac62ad14e76904f0d41bb6a758712839944e6e Mon Sep 17 00:00:00 2001 From: Revix-0 <30447649+revix-0@users.noreply.github.com> Date: Thu, 16 Jun 2022 19:41:36 +0200 Subject: [PATCH 09/11] remove sstruct and use parameters --- ui/xemu.c | 4 ++-- ui/xui/main-menu.cc | 16 ++++------------ ui/xui/popup-menu.cc | 7 +++++++ ui/xui/xemu-hud.h | 7 +------ 4 files changed, 14 insertions(+), 20 deletions(-) diff --git a/ui/xemu.c b/ui/xemu.c index 6f5632648b1..b3f2d307037 100644 --- a/ui/xemu.c +++ b/ui/xemu.c @@ -198,9 +198,9 @@ void sdl2_window_resize(struct sdl2_console *scon) surface_height(scon->surface)); } -void xemu_get_window_size(window_data *data) +void xemu_get_window_size(int *width, int *height) { - SDL_GetWindowSize(m_window, &data->width, &data->height); + SDL_GetWindowSize(m_window, width, height); } static void sdl2_redraw(struct sdl2_console *scon) diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index 360f8a1a459..df06df5e173 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -27,7 +27,6 @@ #include "misc.hh" #include "gl-helpers.hh" #include "reporting.hh" -#include "popup-menu.hh" #include "../xemu-input.h" #include "../xemu-notifications.h" @@ -793,14 +792,6 @@ void MainMenuSystemView::Draw() } } -static const char *GetDisplayMode() -{ - const char *values[] = { - "Center", "Scale", "Scale (Widescreen 16:9)", "Scale (4:3)", "Stretch" - }; - return values[g_config.display.ui.fit]; -} - void MainMenuAboutView::Draw() { static const char *build_info_text = NULL; @@ -822,11 +813,12 @@ void MainMenuAboutView::Draw() xemu_get_cpu_info(), xemu_get_os_platform(), xemu_get_os_info(), gl_vendor, gl_renderer, gl_version, gl_shader_version); } - window_data data; - xemu_get_window_size(&data); + int width = 0, height = 0; + xemu_get_window_size(&width, &height); + char *content = g_strdup_printf("%sScaling: %dx\nResolution: %dx%d\nDisplay Mode: %s", sys_info_text, nv2a_get_surface_scale_factor(), - data.width, data.height, GetDisplayMode()); + width, height, GetDisplayMode()); static uint32_t time_start = 0; if (ImGui::IsWindowAppearing()) { diff --git a/ui/xui/popup-menu.cc b/ui/xui/popup-menu.cc index 6cad92e2a13..204f5e84665 100644 --- a/ui/xui/popup-menu.cc +++ b/ui/xui/popup-menu.cc @@ -252,6 +252,13 @@ bool PopupMenu::DrawItems(PopupMenuItemDelegate &nav) class DisplayModePopupMenu : public virtual PopupMenu { public: + const char *GetDisplayMode() + { + const char *values[] = { + "Center", "Scale", "Scale (Widescreen 16:9)", "Scale (4:3)", "Stretch" + }; + return values[g_config.display.ui.fit]; + } bool DrawItems(PopupMenuItemDelegate &nav) override { const char *values[] = { diff --git a/ui/xui/xemu-hud.h b/ui/xui/xemu-hud.h index bacf4f01dd9..1fbbd0aac7d 100644 --- a/ui/xui/xemu-hud.h +++ b/ui/xui/xemu-hud.h @@ -35,12 +35,7 @@ void xemu_monitor_init(void); void xemu_toggle_fullscreen(void); void xemu_eject_disc(void); void xemu_load_disc(const char *path); -typedef struct window_data -{ - int width, height; -}window_data; - -void xemu_get_window_size(window_data *data); +void xemu_get_window_size(int *width, int *height); // Implemented in xemu_hud.cc void xemu_hud_init(SDL_Window *window, void *sdl_gl_context); From 8042e0a0a3165042f114f5b689f053d997623572 Mon Sep 17 00:00:00 2001 From: Revix-0 <30447649+revix-0@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:57:38 +0200 Subject: [PATCH 10/11] Add array in misc.hh to avoid double translation --- ui/xui/main-menu.cc | 2 +- ui/xui/misc.hh | 2 ++ ui/xui/popup-menu.cc | 14 ++------------ 3 files changed, 5 insertions(+), 13 deletions(-) diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index 6b43bd415b4..7df7bcb451b 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -823,7 +823,7 @@ void MainMenuAboutView::Draw() char *content = g_strdup_printf("%sScaling: %dx\nResolution: %dx%d\nDisplay Mode: %s", sys_info_text, nv2a_get_surface_scale_factor(), - width, height, GetDisplayMode()); + width, height, display_modes[g_config.display.ui.fit]); static uint32_t time_start = 0; if (ImGui::IsWindowAppearing()) { diff --git a/ui/xui/misc.hh b/ui/xui/misc.hh index b2c8a9e99df..3df21c5ad48 100644 --- a/ui/xui/misc.hh +++ b/ui/xui/misc.hh @@ -28,6 +28,8 @@ extern "C" { #include } +extern const char **display_modes; + static inline bool IsNavInputPressed(ImGuiNavInput i) { ImGuiIO &io = ImGui::GetIO(); diff --git a/ui/xui/popup-menu.cc b/ui/xui/popup-menu.cc index 204f5e84665..7d284ad2788 100644 --- a/ui/xui/popup-menu.cc +++ b/ui/xui/popup-menu.cc @@ -252,23 +252,13 @@ bool PopupMenu::DrawItems(PopupMenuItemDelegate &nav) class DisplayModePopupMenu : public virtual PopupMenu { public: - const char *GetDisplayMode() - { - const char *values[] = { - "Center", "Scale", "Scale (Widescreen 16:9)", "Scale (4:3)", "Stretch" - }; - return values[g_config.display.ui.fit]; - } + bool DrawItems(PopupMenuItemDelegate &nav) override { - const char *values[] = { - "Center", "Scale", "Scale (Widescreen 16:9)", "Scale (4:3)", "Stretch" - }; - for (int i = 0; i < CONFIG_DISPLAY_UI_FIT__COUNT; i++) { bool selected = g_config.display.ui.fit == i; if (m_focus && selected) ImGui::SetKeyboardFocusHere(); - if (PopupMenuCheck(values[i], "", selected)) + if (PopupMenuCheck(display_modes[i], "", selected)) g_config.display.ui.fit = i; } From 3e0b71f616e935c4aa87102c882d23204031d380 Mon Sep 17 00:00:00 2001 From: Revix-0 <30447649+revix-0@users.noreply.github.com> Date: Tue, 21 Jun 2022 12:09:40 +0200 Subject: [PATCH 11/11] rename array to avoid ambiguation --- ui/xui/main-menu.cc | 2 +- ui/xui/misc.hh | 2 +- ui/xui/popup-menu.cc | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ui/xui/main-menu.cc b/ui/xui/main-menu.cc index 7df7bcb451b..809d10bfce4 100644 --- a/ui/xui/main-menu.cc +++ b/ui/xui/main-menu.cc @@ -823,7 +823,7 @@ void MainMenuAboutView::Draw() char *content = g_strdup_printf("%sScaling: %dx\nResolution: %dx%d\nDisplay Mode: %s", sys_info_text, nv2a_get_surface_scale_factor(), - width, height, display_modes[g_config.display.ui.fit]); + width, height, g_ui_display_mode_name[g_config.display.ui.fit]); static uint32_t time_start = 0; if (ImGui::IsWindowAppearing()) { diff --git a/ui/xui/misc.hh b/ui/xui/misc.hh index 3df21c5ad48..bd2ceb769aa 100644 --- a/ui/xui/misc.hh +++ b/ui/xui/misc.hh @@ -28,7 +28,7 @@ extern "C" { #include } -extern const char **display_modes; +extern const char *g_ui_display_mode_name[]; static inline bool IsNavInputPressed(ImGuiNavInput i) { diff --git a/ui/xui/popup-menu.cc b/ui/xui/popup-menu.cc index 7d284ad2788..0300ec398f5 100644 --- a/ui/xui/popup-menu.cc +++ b/ui/xui/popup-menu.cc @@ -36,6 +36,7 @@ void PopupMenuItemDelegate::LostFocus() {} void PopupMenuItemDelegate::PushFocus() {} void PopupMenuItemDelegate::PopFocus() {} bool PopupMenuItemDelegate::DidPop() { return false; } +const char *g_ui_display_mode_name[] = {"Center", "Scale", "Scale (Widescreen 16:9)", "Scale (4:3)", "Stretch"}; bool PopupMenuButton(std::string text, std::string icon = "") { @@ -258,7 +259,7 @@ class DisplayModePopupMenu : public virtual PopupMenu { for (int i = 0; i < CONFIG_DISPLAY_UI_FIT__COUNT; i++) { bool selected = g_config.display.ui.fit == i; if (m_focus && selected) ImGui::SetKeyboardFocusHere(); - if (PopupMenuCheck(display_modes[i], "", selected)) + if (PopupMenuCheck(g_ui_display_mode_name[i], "", selected)) g_config.display.ui.fit = i; }