This commit is contained in:
twinaphex 2020-08-03 22:09:02 +02:00
parent 77c2aa0150
commit e45d04b826
2 changed files with 47 additions and 28 deletions

View File

@ -486,15 +486,21 @@ float gfx_display_get_widget_dpi_scale(
#endif
gfx_display_t *p_disp = disp_get_ptr();
/* When using RGUI, _menu_scale_factor
* is ignored
* > If we are not using a widget scale factor override,
* just set menu_scale_factor to 1.0 */
float menu_scale_factor =
gfx_widget_scale_auto ?
((p_disp->menu_driver_id == MENU_DRIVER_ID_RGUI) ?
1.0f : _menu_scale_factor) :
menu_widget_scale_factor;
float menu_scale_factor = menu_widget_scale_factor;
if (gfx_widget_scale_auto)
{
#ifdef HAVE_RGUI
/* When using RGUI, _menu_scale_factor
* is ignored
* > If we are not using a widget scale factor override,
* just set menu_scale_factor to 1.0 */
if (p_disp->menu_driver_id == MENU_DRIVER_ID_RGUI)
menu_scale_factor = 1.0f;
else
#endif
menu_scale_factor = _menu_scale_factor;
}
/* Scale is based on display metrics - these are a fixed
* hardware property. To minimise performance overheads
@ -550,15 +556,21 @@ float gfx_display_get_widget_pixel_scale(
menu_widget_scale_factor_fullscreen : menu_widget_scale_factor_windowed;
#endif
gfx_display_t *p_disp = disp_get_ptr();
float menu_scale_factor = menu_widget_scale_factor;
/* When using RGUI, _menu_scale_factor is ignored
* > If we are not using a widget scale factor override,
* just set menu_scale_factor to 1.0 */
float menu_scale_factor =
gfx_widget_scale_auto ?
((p_disp->menu_driver_id == MENU_DRIVER_ID_RGUI) ?
1.0f : _menu_scale_factor) :
menu_widget_scale_factor;
if (gfx_widget_scale_auto)
{
#ifdef HAVE_RGUI
/* When using RGUI, _menu_scale_factor
* is ignored
* > If we are not using a widget scale factor override,
* just set menu_scale_factor to 1.0 */
if (p_disp->menu_driver_id == MENU_DRIVER_ID_RGUI)
menu_scale_factor = 1.0f;
else
#endif
menu_scale_factor = _menu_scale_factor;
}
/* We need to perform a square root here, which
* can be slow on some platforms (not *slow*, but

View File

@ -805,10 +805,14 @@ void gfx_widgets_iterate(
dispgfx_widget_t *p_dispwidget = (dispgfx_widget_t*)data;
/* Check whether screen dimensions or menu scale
* factor have changed */
float scale_factor = (
gfx_display_get_driver_id() == MENU_DRIVER_ID_XMB)
? gfx_display_get_widget_pixel_scale(width, height, fullscreen)
: gfx_display_get_widget_dpi_scale(width, height, fullscreen);
float scale_factor = 0.0f;
#ifdef HAVE_XMB
if (gfx_display_get_driver_id() == MENU_DRIVER_ID_XMB)
scale_factor = gfx_display_get_widget_pixel_scale(width, height, fullscreen);
else
#endif
scale_factor = gfx_display_get_widget_dpi_scale(
width, height, fullscreen);
if ((scale_factor != p_dispwidget->last_scale_factor) ||
(width != p_dispwidget->last_video_width) ||
@ -1866,13 +1870,16 @@ static void gfx_widgets_context_reset(
}
/* Update scaling/dimensions */
p_dispwidget->last_video_width = width;
p_dispwidget->last_video_height = height;
p_dispwidget->last_scale_factor = (
gfx_display_get_driver_id() == MENU_DRIVER_ID_XMB) ?
gfx_display_get_widget_pixel_scale(p_dispwidget->last_video_width,
p_dispwidget->last_video_height, fullscreen) :
gfx_display_get_widget_dpi_scale(
p_dispwidget->last_video_width = width;
p_dispwidget->last_video_height = height;
#ifdef HAVE_XMB
if (gfx_display_get_driver_id() == MENU_DRIVER_ID_XMB)
p_dispwidget->last_scale_factor = gfx_display_get_widget_pixel_scale(
p_dispwidget->last_video_width,
p_dispwidget->last_video_height, fullscreen);
else
#endif
p_dispwidget->last_scale_factor = gfx_display_get_widget_dpi_scale(
p_dispwidget->last_video_width,
p_dispwidget->last_video_height,
fullscreen);