mirror of
https://github.com/libretro/RetroArch
synced 2025-01-31 15:32:59 +00:00
(RGUI) Fix 'Lock Menu Aspect Ratio' option when using custom viewports
This commit is contained in:
parent
6592325b67
commit
11488857ee
@ -432,6 +432,7 @@ typedef struct
|
|||||||
char theme_preset_path[PATH_MAX_LENGTH]; /* Must be a fixed length array... */
|
char theme_preset_path[PATH_MAX_LENGTH]; /* Must be a fixed length array... */
|
||||||
char menu_title[255]; /* Must be a fixed length array... */
|
char menu_title[255]; /* Must be a fixed length array... */
|
||||||
char menu_sublabel[255]; /* Must be a fixed length array... */
|
char menu_sublabel[255]; /* Must be a fixed length array... */
|
||||||
|
unsigned content_aspect_ratio;
|
||||||
struct scaler_ctx image_scaler;
|
struct scaler_ctx image_scaler;
|
||||||
} rgui_t;
|
} rgui_t;
|
||||||
|
|
||||||
@ -2441,29 +2442,44 @@ static int rgui_pointer_tap(void *data,
|
|||||||
|
|
||||||
static void rgui_toggle(void *userdata, bool menu_on)
|
static void rgui_toggle(void *userdata, bool menu_on)
|
||||||
{
|
{
|
||||||
|
rgui_t *rgui = (rgui_t*)userdata;
|
||||||
settings_t *settings = config_get_ptr();
|
settings_t *settings = config_get_ptr();
|
||||||
|
|
||||||
/* TODO/FIXME - when we close RetroArch, this function
|
/* TODO/FIXME - when we close RetroArch, this function
|
||||||
* gets called and settings is NULL at this point.
|
* gets called and settings is NULL at this point.
|
||||||
* Maybe fundamentally change control flow so that on RetroArch
|
* Maybe fundamentally change control flow so that on RetroArch
|
||||||
* exit, this doesn't get called. */
|
* exit, this doesn't get called. */
|
||||||
if (!settings)
|
if (!rgui || !settings)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (settings->bools.menu_rgui_lock_aspect)
|
if (settings->bools.menu_rgui_lock_aspect)
|
||||||
{
|
{
|
||||||
if (menu_on)
|
if (menu_on)
|
||||||
{
|
{
|
||||||
if (settings->uints.video_aspect_ratio_idx != ASPECT_RATIO_4_3)
|
/* Cache last used content aspect ratio */
|
||||||
|
rgui->content_aspect_ratio = settings->uints.video_aspect_ratio_idx;
|
||||||
|
|
||||||
|
/* Check if aspect ratio needs to change */
|
||||||
|
if (rgui->content_aspect_ratio != ASPECT_RATIO_4_3)
|
||||||
{
|
{
|
||||||
unsigned aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
|
|
||||||
settings->uints.video_aspect_ratio_idx = ASPECT_RATIO_4_3;
|
settings->uints.video_aspect_ratio_idx = ASPECT_RATIO_4_3;
|
||||||
video_driver_set_aspect_ratio();
|
video_driver_set_aspect_ratio();
|
||||||
settings->uints.video_aspect_ratio_idx = aspect_ratio_idx;
|
|
||||||
|
/* If content is using a custom aspect ratio, we
|
||||||
|
* have to stop here - otherwise, restore content
|
||||||
|
* aspect ratio setting */
|
||||||
|
if (rgui->content_aspect_ratio != ASPECT_RATIO_CUSTOM)
|
||||||
|
settings->uints.video_aspect_ratio_idx = rgui->content_aspect_ratio;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
/* If content is using a custom aspect ratio, this
|
||||||
|
* must be restored */
|
||||||
|
if (rgui->content_aspect_ratio == ASPECT_RATIO_CUSTOM
|
||||||
|
&& settings->uints.video_aspect_ratio_idx == ASPECT_RATIO_4_3)
|
||||||
|
settings->uints.video_aspect_ratio_idx = rgui->content_aspect_ratio;
|
||||||
|
|
||||||
if (settings->uints.video_aspect_ratio_idx != ASPECT_RATIO_4_3)
|
if (settings->uints.video_aspect_ratio_idx != ASPECT_RATIO_4_3)
|
||||||
video_driver_set_aspect_ratio();
|
video_driver_set_aspect_ratio();
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user