diff --git a/config.def.h b/config.def.h index 64b8674aaf..b0f0d08e95 100644 --- a/config.def.h +++ b/config.def.h @@ -651,6 +651,10 @@ static const unsigned default_content_history_size = 100; /* Show Menu start-up screen on boot. */ static const bool menu_show_start_screen = true; +static const bool menu_dpi_override_enable = false; + +static const unsigned menu_dpi_override_value = 72; + /* Log level for libretro cores (GET_LOG_INTERFACE). */ static const unsigned libretro_log_level = 0; diff --git a/configuration.c b/configuration.c index d490b826c2..014d8b1acb 100644 --- a/configuration.c +++ b/configuration.c @@ -554,6 +554,9 @@ static void config_set_defaults(void) settings->menu.entry_hover_color = menu_entry_hover_color; settings->menu.title_color = menu_title_color; + settings->menu.dpi.override_enable = menu_dpi_override_enable; + settings->menu.dpi.override_value = menu_dpi_override_value; + settings->menu.navigation.wraparound.horizontal_enable = true; settings->menu.navigation.wraparound.vertical_enable = true; settings->menu.navigation.browser.filter.supported_extensions_enable = true; @@ -1183,6 +1186,10 @@ static bool config_load_file(const char *path, bool set_defaults) #ifdef HAVE_THREADS CONFIG_GET_BOOL_BASE(conf, settings, menu.threaded_data_runloop_enable, "threaded_data_runloop_enable"); #endif + + CONFIG_GET_BOOL_BASE(conf, settings, menu.dpi.override_enable, "dpi_override_enable"); + CONFIG_GET_INT_BASE (conf, settings, menu.dpi.override_value, "dpi_override_value"); + CONFIG_GET_BOOL_BASE(conf, settings, menu.pause_libretro, "menu_pause_libretro"); CONFIG_GET_BOOL_BASE(conf, settings, menu.mouse.enable, "menu_mouse_enable"); CONFIG_GET_BOOL_BASE(conf, settings, menu.pointer.enable, "menu_pointer_enable"); @@ -2244,6 +2251,9 @@ bool config_save_file(const char *path) #ifdef HAVE_THREADS config_set_bool(conf,"threaded_data_runloop_enable", settings->menu.threaded_data_runloop_enable); #endif + + config_set_bool(conf, "dpi_override_enable", settings->menu.dpi.override_enable); + config_set_int (conf, "dpi_override_value", settings->menu.dpi.override_value); config_set_string(conf,"menu_driver", settings->menu.driver); config_set_bool(conf,"menu_pause_libretro", settings->menu.pause_libretro); config_set_bool(conf,"menu_mouse_enable", settings->menu.mouse.enable); diff --git a/configuration.h b/configuration.h index cb82a7c52e..4a08d6fba7 100644 --- a/configuration.h +++ b/configuration.h @@ -139,6 +139,13 @@ typedef struct settings } filter; } browser; } navigation; + + struct + { + bool override_enable; + unsigned override_value; + } dpi; + bool collapse_subgroups_enable; bool show_advanced_settings; #ifdef HAVE_THREADS diff --git a/menu/menu_display.c b/menu/menu_display.c index 734c7ff3b1..fbf7c4a6fa 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -84,13 +84,16 @@ bool menu_display_init(menu_handle_t *menu) float menu_display_get_dpi(menu_handle_t *menu) { - float dpi, dpi_orig = 128; + float dpi; + settings_t *settings = config_get_ptr(); - if (!menu) - return dpi_orig; + if (!menu || !settings) + return 128; - if (!gfx_ctx_get_metrics(DISPLAY_METRIC_DPI, &dpi)) - dpi = dpi_orig; + if ( settings->menu.dpi.override_enable || + !gfx_ctx_get_metrics(DISPLAY_METRIC_DPI, &dpi) + ) + return settings->menu.dpi.override_value; return dpi; } diff --git a/settings.c b/settings.c index 433e907208..cf967127ed 100644 --- a/settings.c +++ b/settings.c @@ -5480,6 +5480,33 @@ static bool setting_append_list_menu_options( general_read_handler); + END_SUB_GROUP(list, list_info); + + START_SUB_GROUP(list, list_info, "Display", group_info.name, subgroup_info); + + CONFIG_BOOL( + settings->menu.dpi.override_enable, + "dpi_override_enable", + "DPI Override Enable", + menu_dpi_override_enable, + "OFF", + "ON", + group_info.name, + subgroup_info.name, + general_write_handler, + general_read_handler); + + CONFIG_UINT( + settings->menu.dpi.override_value, + "dpi_override_value", + "DPI Override", + menu_dpi_override_value, + group_info.name, + subgroup_info.name, + general_write_handler, + general_read_handler); + settings_list_current_add_range(list, list_info, 72, 999, 1, true, true); + END_SUB_GROUP(list, list_info); END_GROUP(list, list_info);