overlays: add fullscreen toggle to home menu

This commit is contained in:
Megamouse 2026-02-25 07:40:08 +01:00
parent bc93fdf9f4
commit f6429a1ae8
4 changed files with 25 additions and 1 deletions

View file

@ -12,6 +12,8 @@
extern atomic_t<bool> g_user_asked_for_recording;
atomic_t<bool> g_user_asked_for_fullscreen = false;
namespace rsx
{
namespace overlays
@ -80,7 +82,7 @@ namespace rsx
if (btn != pad_button::cross) return page_navigation::stay;
rsx_log.notice("User selected trophies in home menu");
Emu.CallFromMainThread([trop_name = std::move(trop_name)]()
Emu.CallFromMainThread([trop_name]()
{
if (auto manager = g_fxo->try_get<rsx::overlays::display_manager>())
{
@ -110,6 +112,17 @@ namespace rsx
return page_navigation::exit;
});
std::unique_ptr<overlay_element> fullscreen = std::make_unique<home_menu_entry>(get_localized_string(localized_string_id::HOME_MENU_TOGGLE_FULLSCREEN));
add_item(fullscreen, [](pad_button btn) -> page_navigation
{
if (btn != pad_button::cross)
return page_navigation::stay;
rsx_log.notice("User selected toggle fullscreen in home menu");
g_user_asked_for_fullscreen = true;
return page_navigation::stay; // No need to exit
});
add_page(std::make_shared<home_menu_savestate>(x, y, width, height, use_separators, this));
std::unique_ptr<overlay_element> restart = std::make_unique<home_menu_entry>(get_localized_string(localized_string_id::HOME_MENU_RESTART));

View file

@ -277,6 +277,7 @@ enum class localized_string_id
HOME_MENU_RELOAD_SECOND_SAVESTATE,
HOME_MENU_RELOAD_THIRD_SAVESTATE,
HOME_MENU_RELOAD_FOURTH_SAVESTATE,
HOME_MENU_TOGGLE_FULLSCREEN,
HOME_MENU_RECORDING,
HOME_MENU_TROPHIES,
HOME_MENU_TROPHY_LIST_TITLE,

View file

@ -51,6 +51,7 @@ LOG_CHANNEL(screenshot_log, "SCREENSHOT");
LOG_CHANNEL(mark_log, "MARK");
LOG_CHANNEL(gui_log, "GUI");
extern atomic_t<bool> g_user_asked_for_fullscreen;
extern atomic_t<bool> g_user_asked_for_recording;
extern atomic_t<bool> g_user_asked_for_screenshot;
extern atomic_t<bool> g_user_asked_for_frame_capture;
@ -840,6 +841,14 @@ void gs_frame::flip(draw_context_t, bool /*skip_frame*/)
toggle_recording();
});
}
if (g_user_asked_for_fullscreen.exchange(false))
{
Emu.CallFromMainThread([this]()
{
toggle_fullscreen();
});
}
}
bool gs_frame::can_consume_frame() const

View file

@ -298,6 +298,7 @@ private:
case localized_string_id::HOME_MENU_RELOAD_SECOND_SAVESTATE: return tr("Reload Second-To-Last Emulation State");
case localized_string_id::HOME_MENU_RELOAD_THIRD_SAVESTATE: return tr("Reload Third-To-Last Emulation State");
case localized_string_id::HOME_MENU_RELOAD_FOURTH_SAVESTATE: return tr("Reload Fourth-To-Last Emulation State");
case localized_string_id::HOME_MENU_TOGGLE_FULLSCREEN: return tr("Toggle Fullscreen");
case localized_string_id::HOME_MENU_RECORDING: return tr("Start/Stop Recording");
case localized_string_id::HOME_MENU_TROPHIES: return tr("Trophies");
case localized_string_id::HOME_MENU_TROPHY_LIST_TITLE: return tr("Trophy Progress: %0").arg(std::forward<Args>(args)...);