(Ozone/MaterialUI) Settings cleanups

This commit is contained in:
twinaphex 2020-02-23 07:53:19 +01:00
parent 3b207990ce
commit 976b659e2b
2 changed files with 165 additions and 135 deletions

View File

@ -1786,91 +1786,95 @@ static void materialui_draw_thumbnail(
bg_y = y - (bg_height - (float)mui->thumbnail_height_max) / 2.0f; bg_y = y - (bg_height - (float)mui->thumbnail_height_max) / 2.0f;
/* If thumbnail is missing, draw fallback image... */ /* If thumbnail is missing, draw fallback image... */
if (thumbnail->status == GFX_THUMBNAIL_STATUS_MISSING) switch (thumbnail->status)
{ {
float icon_size; case GFX_THUMBNAIL_STATUS_MISSING:
{
float icon_size = (float)mui->icon_size;
/* Adjust icon size based on scale factor */ /* Adjust icon size based on scale factor */
if (scale_factor >= 1.0f) if (scale_factor < 1.0f)
icon_size = (float)mui->icon_size; icon_size *= scale_factor;
else
icon_size = (float)mui->icon_size * scale_factor;
/* Background */ /* Background */
gfx_display_set_alpha( gfx_display_set_alpha(
mui->colors.thumbnail_background, mui->colors.thumbnail_background,
mui->transition_alpha); mui->transition_alpha);
gfx_display_draw_quad( gfx_display_draw_quad(
video_info, video_info,
bg_x, bg_x,
bg_y, bg_y,
(unsigned)bg_width, (unsigned)bg_width,
(unsigned)bg_height, (unsigned)bg_height,
width, width,
height, height,
mui->colors.thumbnail_background); mui->colors.thumbnail_background);
/* Icon */ /* Icon */
materialui_draw_icon(video_info, materialui_draw_icon(video_info,
(unsigned)icon_size, (unsigned)icon_size,
mui->textures.list[MUI_TEXTURE_IMAGE], mui->textures.list[MUI_TEXTURE_IMAGE],
bg_x + (bg_width - icon_size) / 2.0f, bg_x + (bg_width - icon_size) / 2.0f,
bg_y + (bg_height - icon_size) / 2.0f, bg_y + (bg_height - icon_size) / 2.0f,
width, width,
height, height,
0.0f, 0.0f,
1.0f, 1.0f,
mui->colors.missing_thumbnail_icon); mui->colors.missing_thumbnail_icon);
} }
/* If thumbnail is available, draw it break;
* > Note that other conditions are ignored - i.e. we case GFX_THUMBNAIL_STATUS_AVAILABLE:
* we draw nothing if thumbnail status is unknown, /* If thumbnail is available, draw it
* or we are waiting for a thumbnail to load) */ * > Note that other conditions are ignored - i.e. we
else if (thumbnail->status == GFX_THUMBNAIL_STATUS_AVAILABLE) * we draw nothing if thumbnail status is unknown,
{ * or we are waiting for a thumbnail to load) */
settings_t *settings = config_get_ptr(); {
settings_t *settings = config_get_ptr();
if (!settings) /* Background */
return; if (settings &&
settings->bools.menu_materialui_thumbnail_background_enable)
{
/* > If enabled by the user, we draw a background here
* to ensure a uniform visual appearance regardless
* of thumbnail size
* NOTE: Have to round up and add 1 to height,
* otherwise background and thumbnail have obvious
* misalignment (due to various rounding errors...) */
/* Background */ /* > Set background alpha
if (settings->bools.menu_materialui_thumbnail_background_enable) * - Can't do this in materialui_colors_set_transition_alpha()
{ * because it's dependent upon thumbnail opacity
/* > If enabled by the user, we draw a background here * - No need to restore the original alpha value, since it is
* to ensure a uniform visual appearance regardless * always set 'manually' before use */
* of thumbnail size gfx_display_set_alpha(
* NOTE: Have to round up and add 1 to height, mui->colors.thumbnail_background,
* otherwise background and thumbnail have obvious mui->transition_alpha * thumbnail->alpha);
* misalignment (due to various rounding errors...) */
/* > Set background alpha /* > Draw background quad */
* - Can't do this in materialui_colors_set_transition_alpha() gfx_display_draw_quad(
* because it's dependent upon thumbnail opacity video_info,
* - No need to restore the original alpha value, since it is (int)bg_x,
* always set 'manually' before use */ (int)bg_y,
gfx_display_set_alpha( (unsigned)(bg_width + 0.5f),
mui->colors.thumbnail_background, (unsigned)(bg_height + 1.5f),
mui->transition_alpha * thumbnail->alpha); width,
height,
mui->colors.thumbnail_background);
}
/* > Draw background quad */ /* Thumbnail */
gfx_display_draw_quad( gfx_thumbnail_draw(
video_info, video_info, thumbnail,
(int)bg_x, x, y, mui->thumbnail_width_max, mui->thumbnail_height_max,
(int)bg_y, GFX_THUMBNAIL_ALIGN_CENTRE,
(unsigned)(bg_width + 0.5f), mui->transition_alpha, scale_factor, NULL);
(unsigned)(bg_height + 1.5f), }
width, break;
height, case GFX_THUMBNAIL_STATUS_UNKNOWN:
mui->colors.thumbnail_background); default:
} break;
/* Thumbnail */
gfx_thumbnail_draw(
video_info, thumbnail,
x, y, mui->thumbnail_width_max, mui->thumbnail_height_max,
GFX_THUMBNAIL_ALIGN_CENTRE,
mui->transition_alpha, scale_factor, NULL);
} }
} }
@ -2289,8 +2293,15 @@ static void materialui_render(void *data,
file_list_t *list = menu_entries_get_selection_buf_ptr(0); file_list_t *list = menu_entries_get_selection_buf_ptr(0);
bool first_entry_found = false; bool first_entry_found = false;
bool last_entry_found = false; bool last_entry_found = false;
unsigned landscape_layout_optimization
= settings->uints.menu_materialui_landscape_layout_optimization;
bool auto_rotate_nav_bar = settings->bools.menu_materialui_auto_rotate_nav_bar;
unsigned thumbnail_upscale_threshold =
settings->uints.gfx_thumbnail_upscale_threshold;
bool network_on_demand_thumbnails =
settings->bools.network_on_demand_thumbnails;
if (!settings || !mui || !list) if (!mui || !list)
return; return;
/* Check whether screen dimensions, menu scale /* Check whether screen dimensions, menu scale
@ -2301,9 +2312,9 @@ static void materialui_render(void *data,
(width != mui->last_width) || (width != mui->last_width) ||
(height != mui->last_height) || (height != mui->last_height) ||
((enum materialui_landscape_layout_optimization_type) ((enum materialui_landscape_layout_optimization_type)
settings->uints.menu_materialui_landscape_layout_optimization != landscape_layout_optimization !=
mui->last_landscape_layout_optimization) || mui->last_landscape_layout_optimization) ||
(settings->bools.menu_materialui_auto_rotate_nav_bar != mui->last_auto_rotate_nav_bar)) (auto_rotate_nav_bar != mui->last_auto_rotate_nav_bar))
{ {
mui->dip_base_unit_size = scale_factor * MUI_DIP_BASE_UNIT_SIZE; mui->dip_base_unit_size = scale_factor * MUI_DIP_BASE_UNIT_SIZE;
mui->last_scale_factor = scale_factor; mui->last_scale_factor = scale_factor;
@ -2311,8 +2322,8 @@ static void materialui_render(void *data,
mui->last_height = height; mui->last_height = height;
mui->last_landscape_layout_optimization = mui->last_landscape_layout_optimization =
(enum materialui_landscape_layout_optimization_type) (enum materialui_landscape_layout_optimization_type)
settings->uints.menu_materialui_landscape_layout_optimization; landscape_layout_optimization;
mui->last_auto_rotate_nav_bar = settings->bools.menu_materialui_auto_rotate_nav_bar; mui->last_auto_rotate_nav_bar = auto_rotate_nav_bar;
/* Screen dimensions/layout are going to change /* Screen dimensions/layout are going to change
* > Once this happens, menu will scroll to the * > Once this happens, menu will scroll to the
@ -2509,10 +2520,6 @@ static void materialui_render(void *data,
{ {
bool on_screen = bool on_screen =
first_entry_found && !last_entry_found; first_entry_found && !last_entry_found;
unsigned thumbnail_upscale_threshold =
settings->uints.gfx_thumbnail_upscale_threshold;
bool network_on_demand_thumbnails =
settings->bools.network_on_demand_thumbnails;
if (mui->secondary_thumbnail_enabled) if (mui->secondary_thumbnail_enabled)
gfx_thumbnail_process_streams( gfx_thumbnail_process_streams(
@ -3688,6 +3695,7 @@ static void materialui_render_entry_touch_feedback(
static void materialui_render_header( static void materialui_render_header(
materialui_handle_t *mui, video_frame_info_t *video_info, unsigned width, unsigned height) materialui_handle_t *mui, video_frame_info_t *video_info, unsigned width, unsigned height)
{ {
char menu_title_buf[255];
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
size_t menu_title_margin = 0; size_t menu_title_margin = 0;
int usable_sys_bar_width = (int)width - (int)mui->nav_bar_layout_width; int usable_sys_bar_width = (int)width - (int)mui->nav_bar_layout_width;
@ -3702,13 +3710,13 @@ static void materialui_render_header(
bool use_landscape_layout = !mui->is_portrait && bool use_landscape_layout = !mui->is_portrait &&
(mui->last_landscape_layout_optimization != MATERIALUI_LANDSCAPE_LAYOUT_OPTIMIZATION_DISABLED); (mui->last_landscape_layout_optimization != MATERIALUI_LANDSCAPE_LAYOUT_OPTIMIZATION_DISABLED);
const char *menu_title = mui->menu_title; const char *menu_title = mui->menu_title;
char menu_title_buf[255]; bool battery_level_enable = settings->bools.menu_battery_level_enable;
bool menu_timedate_enable = settings->bools.menu_timedate_enable;
unsigned menu_timedate_style = settings->uints.menu_timedate_style;
bool menu_core_enable = settings->bools.menu_core_enable;
menu_title_buf[0] = '\0'; menu_title_buf[0] = '\0';
if (!settings)
return;
/* Draw background quads /* Draw background quads
* > Title bar is underneath system bar * > Title bar is underneath system bar
* > Shadow is underneath title bar */ * > Shadow is underneath title bar */
@ -3749,7 +3757,7 @@ static void materialui_render_header(
/* System bar items */ /* System bar items */
/* > Draw battery indicator (if required) */ /* > Draw battery indicator (if required) */
if (settings->bools.menu_battery_level_enable) if (battery_level_enable)
{ {
gfx_display_ctx_powerstate_t powerstate; gfx_display_ctx_powerstate_t powerstate;
char percent_str[MUI_BATTERY_PERCENT_MAX_LENGTH]; char percent_str[MUI_BATTERY_PERCENT_MAX_LENGTH];
@ -3766,14 +3774,16 @@ static void materialui_render_header(
/* Need to determine pixel width of percent string /* Need to determine pixel width of percent string
* > This is somewhat expensive, so utilise a cache * > This is somewhat expensive, so utilise a cache
* and only update when the string actually changes */ * and only update when the string actually changes */
if (!string_is_equal(percent_str, mui->sys_bar_cache.battery_percent_str)) if (!string_is_equal(percent_str,
mui->sys_bar_cache.battery_percent_str))
{ {
/* Cache new string */ /* Cache new string */
strlcpy(mui->sys_bar_cache.battery_percent_str, percent_str, strlcpy(mui->sys_bar_cache.battery_percent_str, percent_str,
MUI_BATTERY_PERCENT_MAX_LENGTH * sizeof(char)); MUI_BATTERY_PERCENT_MAX_LENGTH * sizeof(char));
/* Cache width */ /* Cache width */
mui->sys_bar_cache.battery_percent_width = font_driver_get_message_width( mui->sys_bar_cache.battery_percent_width =
font_driver_get_message_width(
mui->font_data.hint.font, mui->font_data.hint.font,
mui->sys_bar_cache.battery_percent_str, mui->sys_bar_cache.battery_percent_str,
(unsigned)strlen(mui->sys_bar_cache.battery_percent_str), (unsigned)strlen(mui->sys_bar_cache.battery_percent_str),
@ -3784,7 +3794,8 @@ static void materialui_render_header(
{ {
/* Set critical by default, to ensure texture_battery /* Set critical by default, to ensure texture_battery
* is always valid */ * is always valid */
uintptr_t texture_battery = mui->textures.list[MUI_TEXTURE_BATTERY_CRITICAL]; uintptr_t texture_battery =
mui->textures.list[MUI_TEXTURE_BATTERY_CRITICAL];
/* Draw battery icon */ /* Draw battery icon */
if (powerstate.charging) if (powerstate.charging)
@ -3810,8 +3821,11 @@ static void materialui_render_header(
materialui_draw_icon(video_info, materialui_draw_icon(video_info,
mui->sys_bar_icon_size, mui->sys_bar_icon_size,
(uintptr_t)texture_battery, (uintptr_t)texture_battery,
(int)width - ((int)mui->sys_bar_cache.battery_percent_width + (int)width - (
(int)mui->sys_bar_margin + (int)mui->sys_bar_icon_size + (int)mui->nav_bar_layout_width), (int)mui->sys_bar_cache.battery_percent_width +
(int)mui->sys_bar_margin +
(int)mui->sys_bar_icon_size +
(int)mui->nav_bar_layout_width),
0, 0,
width, width,
height, height,
@ -3834,7 +3848,7 @@ static void materialui_render_header(
} }
/* > Draw clock (if required) */ /* > Draw clock (if required) */
if (settings->bools.menu_timedate_enable) if (menu_timedate_enable)
{ {
gfx_display_ctx_datetime_t datetime; gfx_display_ctx_datetime_t datetime;
char timedate_str[MUI_TIMEDATE_MAX_LENGTH]; char timedate_str[MUI_TIMEDATE_MAX_LENGTH];
@ -3843,7 +3857,7 @@ static void materialui_render_header(
datetime.s = timedate_str; datetime.s = timedate_str;
datetime.len = sizeof(timedate_str); datetime.len = sizeof(timedate_str);
datetime.time_mode = settings->uints.menu_timedate_style; datetime.time_mode = menu_timedate_style;
menu_display_timedate(&datetime); menu_display_timedate(&datetime);
@ -3875,19 +3889,25 @@ static void materialui_render_header(
gfx_display_draw_text(mui->font_data.hint.font, gfx_display_draw_text(mui->font_data.hint.font,
mui->sys_bar_cache.timedate_str, mui->sys_bar_cache.timedate_str,
(int)width - ((int)sys_bar_clock_width + (int)sys_bar_battery_width + (int)mui->nav_bar_layout_width), (int)width - (
(int)sys_bar_clock_width
+ (int)sys_bar_battery_width
+ (int)mui->nav_bar_layout_width),
sys_bar_text_y, sys_bar_text_y,
width, height, mui->colors.sys_bar_text, TEXT_ALIGN_LEFT, 1.0f, false, 0, false); width, height, mui->colors.sys_bar_text,
TEXT_ALIGN_LEFT, 1.0f, false, 0, false);
usable_sys_bar_width -= sys_bar_clock_width; usable_sys_bar_width -= sys_bar_clock_width;
} }
} }
usable_sys_bar_width -= (2 * mui->sys_bar_margin); usable_sys_bar_width -= (2 * mui->sys_bar_margin);
usable_sys_bar_width = (usable_sys_bar_width > 0) ? usable_sys_bar_width : 0; usable_sys_bar_width = (usable_sys_bar_width > 0)
? usable_sys_bar_width
: 0;
/* > Draw core name, if required */ /* > Draw core name, if required */
if (settings->bools.menu_core_enable) if (menu_core_enable)
{ {
char core_title[255]; char core_title[255];
char core_title_buf[255]; char core_title_buf[255];
@ -4847,8 +4867,11 @@ static void materialui_frame(void *data, video_frame_info_t *video_info)
unsigned header_height = gfx_display_get_header_height(); unsigned header_height = gfx_display_get_header_height();
size_t selection = menu_navigation_get_selection(); size_t selection = menu_navigation_get_selection();
int list_x_offset; int list_x_offset;
enum gfx_animation_ticker_type
menu_ticker_type = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type;
bool menu_ticker_smooth = settings->bools.menu_ticker_smooth;
if (!mui || !settings) if (!mui)
return; return;
gfx_display_set_viewport(width, height); gfx_display_set_viewport(width, height);
@ -4865,22 +4888,25 @@ static void materialui_frame(void *data, video_frame_info_t *video_info)
/* Update theme colours, if required */ /* Update theme colours, if required */
if (mui->color_theme != video_info->materialui_color_theme) if (mui->color_theme != video_info->materialui_color_theme)
{ {
materialui_prepare_colors(mui, (enum materialui_color_theme)video_info->materialui_color_theme); materialui_prepare_colors(mui,
mui->color_theme = (enum materialui_color_theme)video_info->materialui_color_theme; (enum materialui_color_theme)
video_info->materialui_color_theme);
mui->color_theme = (enum materialui_color_theme)
video_info->materialui_color_theme;
} }
/* Update line ticker(s) */ /* Update line ticker(s) */
mui->use_smooth_ticker = settings->bools.menu_ticker_smooth; mui->use_smooth_ticker = menu_ticker_smooth;
if (mui->use_smooth_ticker) if (mui->use_smooth_ticker)
{ {
mui->ticker_smooth.idx = gfx_animation_get_ticker_pixel_idx(); mui->ticker_smooth.idx = gfx_animation_get_ticker_pixel_idx();
mui->ticker_smooth.type_enum = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type; mui->ticker_smooth.type_enum = menu_ticker_type;
} }
else else
{ {
mui->ticker.idx = gfx_animation_get_ticker_idx(); mui->ticker.idx = gfx_animation_get_ticker_idx();
mui->ticker.type_enum = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type; mui->ticker.type_enum = menu_ticker_type;
} }
/* Handle any transparency adjustments required /* Handle any transparency adjustments required
@ -5106,7 +5132,7 @@ static void materialui_set_list_view_type(
* be applied, and calculates appropriate landscape * be applied, and calculates appropriate landscape
* entry margin size */ * entry margin size */
static void materialui_set_landscape_optimisations_enable( static void materialui_set_landscape_optimisations_enable(
materialui_handle_t *mui, settings_t *settings) materialui_handle_t *mui)
{ {
bool optimize_landscape_layout = false; bool optimize_landscape_layout = false;
@ -5413,7 +5439,7 @@ static void materialui_update_list_view(materialui_handle_t *mui)
return; return;
materialui_set_list_view_type(mui, settings); materialui_set_list_view_type(mui, settings);
materialui_set_landscape_optimisations_enable(mui, settings); materialui_set_landscape_optimisations_enable(mui);
materialui_set_thumbnail_dimensions(mui); materialui_set_thumbnail_dimensions(mui);
materialui_set_secondary_thumbnail_enable(mui, settings); materialui_set_secondary_thumbnail_enable(mui, settings);
@ -5650,7 +5676,7 @@ static void *materialui_init(void **userdata, bool video_is_threaded)
mui->menu_title[0] = '\0'; mui->menu_title[0] = '\0';
/* Set initial theme colours */ /* Set initial theme colours */
mui->color_theme = (enum materialui_color_theme)settings->uints.menu_materialui_color_theme; mui->color_theme = (enum materialui_color_theme)settings->uints.menu_materialui_color_theme;
materialui_prepare_colors(mui, (enum materialui_color_theme)mui->color_theme); materialui_prepare_colors(mui, (enum materialui_color_theme)mui->color_theme);
/* Initial ticker configuration */ /* Initial ticker configuration */

View File

@ -243,7 +243,7 @@ static void *ozone_init(void **userdata, bool video_is_threaded)
setsysGetColorSetId(&theme); setsysGetColorSetId(&theme);
color_theme = (theme == ColorSetId_Dark) ? 1 : 0; color_theme = (theme == ColorSetId_Dark) ? 1 : 0;
ozone_set_color_theme(ozone, color_theme); ozone_set_color_theme(ozone, color_theme);
settings->uints.menu_ozone_color_theme = color_theme; settings->uints.menu_ozone_color_theme = color_theme;
settings->bools.menu_preferred_system_color_theme_set = true; settings->bools.menu_preferred_system_color_theme_set = true;
setsysExit(); setsysExit();
} }
@ -1479,22 +1479,24 @@ static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_i
unsigned logo_icon_size = 60 * scale_factor; unsigned logo_icon_size = 60 * scale_factor;
unsigned status_icon_size = 92 * scale_factor; unsigned status_icon_size = 92 * scale_factor;
unsigned seperator_margin = 30 * scale_factor; unsigned seperator_margin = 30 * scale_factor;
enum gfx_animation_ticker_type
menu_ticker_type = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type;
/* Initial ticker configuration */ /* Initial ticker configuration */
if (use_smooth_ticker) if (use_smooth_ticker)
{ {
ticker_smooth.idx = gfx_animation_get_ticker_pixel_idx(); ticker_smooth.idx = gfx_animation_get_ticker_pixel_idx();
ticker_smooth.font_scale = 1.0f; ticker_smooth.font_scale = 1.0f;
ticker_smooth.type_enum = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type; ticker_smooth.type_enum = menu_ticker_type;
ticker_smooth.spacer = ticker_spacer; ticker_smooth.spacer = ticker_spacer;
ticker_smooth.x_offset = &ticker_x_offset; ticker_smooth.x_offset = &ticker_x_offset;
ticker_smooth.dst_str_width = NULL; ticker_smooth.dst_str_width = NULL;
} }
else else
{ {
ticker.idx = gfx_animation_get_ticker_idx(); ticker.idx = gfx_animation_get_ticker_idx();
ticker.type_enum = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type; ticker.type_enum = menu_ticker_type;
ticker.spacer = ticker_spacer; ticker.spacer = ticker_spacer;
} }
/* Separator */ /* Separator */
@ -1592,11 +1594,11 @@ static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_i
gfx_display_ctx_datetime_t datetime; gfx_display_ctx_datetime_t datetime;
char timedate[255]; char timedate[255];
timedate[0] = '\0'; timedate[0] = '\0';
datetime.s = timedate; datetime.s = timedate;
datetime.time_mode = settings->uints.menu_timedate_style; datetime.time_mode = settings->uints.menu_timedate_style;
datetime.len = sizeof(timedate); datetime.len = sizeof(timedate);
menu_display_timedate(&datetime); menu_display_timedate(&datetime);
@ -1619,14 +1621,16 @@ static void ozone_draw_header(ozone_handle_t *ozone, video_frame_info_t *video_i
static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_info, settings_t *settings) static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_info, settings_t *settings)
{ {
float scale_factor = ozone->last_scale_factor; float scale_factor = ozone->last_scale_factor;
unsigned seperator_margin = 30 * scale_factor; unsigned seperator_margin = 30 * scale_factor;
unsigned menu_timedate_style = settings->uints.menu_timedate_style;
bool menu_core_enable = settings->bools.menu_core_enable;
/* Separator */ /* Separator */
gfx_display_draw_quad(video_info, seperator_margin, video_info->height - ozone->dimensions.footer_height, video_info->width - seperator_margin * 2, ozone->dimensions.spacer_1px, video_info->width, video_info->height, ozone->theme->header_footer_separator); gfx_display_draw_quad(video_info, seperator_margin, video_info->height - ozone->dimensions.footer_height, video_info->width - seperator_margin * 2, ozone->dimensions.spacer_1px, video_info->width, video_info->height, ozone->theme->header_footer_separator);
/* Core title or Switch icon */ /* Core title or Switch icon */
if (settings->bools.menu_core_enable) if (menu_core_enable)
{ {
char core_title[255]; char core_title[255];
menu_entries_get_core_title(core_title, sizeof(core_title)); menu_entries_get_core_title(core_title, sizeof(core_title));
@ -1700,11 +1704,13 @@ static void ozone_draw_footer(ozone_handle_t *ozone, video_frame_info_t *video_i
void ozone_update_content_metadata(ozone_handle_t *ozone) void ozone_update_content_metadata(ozone_handle_t *ozone)
{ {
size_t selection = menu_navigation_get_selection(); const char *core_name = NULL;
playlist_t *playlist = playlist_get_cached(); size_t selection = menu_navigation_get_selection();
settings_t *settings = config_get_ptr(); playlist_t *playlist = playlist_get_cached();
const char *core_name = NULL; settings_t *settings = config_get_ptr();
bool scroll_content_metadata = settings->bools.ozone_scroll_content_metadata;
bool content_runtime_log = settings->bools.content_runtime_log;
bool content_runtime_log_aggr= settings->bools.content_runtime_log_aggregate;
/* Must check whether core corresponds to 'viewer' /* Must check whether core corresponds to 'viewer'
* content even when not using a playlist, otherwise * content even when not using a playlist, otherwise
* file browser image updates are mishandled */ * file browser image updates are mishandled */
@ -1718,7 +1724,6 @@ void ozone_update_content_metadata(ozone_handle_t *ozone)
if (ozone->is_playlist && playlist) if (ozone->is_playlist && playlist)
{ {
const char *core_label = NULL; const char *core_label = NULL;
bool scroll_content_metadata = settings->bools.ozone_scroll_content_metadata;
/* Fill core name */ /* Fill core name */
if (!core_name || string_is_equal(core_name, "DETECT")) if (!core_name || string_is_equal(core_name, "DETECT"))
@ -1742,7 +1747,7 @@ void ozone_update_content_metadata(ozone_handle_t *ozone)
ozone->selection_core_name_lines = 1; ozone->selection_core_name_lines = 1;
/* Fill play time if applicable */ /* Fill play time if applicable */
if (settings->bools.content_runtime_log || settings->bools.content_runtime_log_aggregate) if (content_runtime_log || content_runtime_log_aggr)
{ {
const struct playlist_entry *entry = NULL; const struct playlist_entry *entry = NULL;
@ -1992,6 +1997,7 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
ozone_handle_t* ozone = (ozone_handle_t*) data; ozone_handle_t* ozone = (ozone_handle_t*) data;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
unsigned color_theme = settings->uints.menu_ozone_color_theme; unsigned color_theme = settings->uints.menu_ozone_color_theme;
bool use_preferred_system_color_theme = settings->bools.menu_use_preferred_system_color_theme;
gfx_animation_ctx_tag messagebox_tag = (uintptr_t)ozone->pending_message; gfx_animation_ctx_tag messagebox_tag = (uintptr_t)ozone->pending_message;
bool draw_osk = menu_input_dialog_get_display_kb(); bool draw_osk = menu_input_dialog_get_display_kb();
static bool draw_osk_old = false; static bool draw_osk_old = false;
@ -2035,18 +2041,18 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
/* Change theme on the fly */ /* Change theme on the fly */
if ((color_theme != last_color_theme) || if ((color_theme != last_color_theme) ||
(last_use_preferred_system_color_theme != settings->bools.menu_use_preferred_system_color_theme)) (last_use_preferred_system_color_theme != use_preferred_system_color_theme))
{ {
if (settings->bools.menu_use_preferred_system_color_theme) if (use_preferred_system_color_theme)
{ {
color_theme = ozone_get_system_theme(); color_theme = ozone_get_system_theme();
settings->uints.menu_ozone_color_theme = color_theme; settings->uints.menu_ozone_color_theme = color_theme;
} }
ozone_set_color_theme(ozone, color_theme); ozone_set_color_theme(ozone, color_theme);
ozone_set_background_running_opacity(ozone, video_info->menu_framebuffer_opacity); ozone_set_background_running_opacity(ozone, video_info->menu_framebuffer_opacity);
last_use_preferred_system_color_theme = settings->bools.menu_use_preferred_system_color_theme; last_use_preferred_system_color_theme = use_preferred_system_color_theme;
} }
gfx_display_set_viewport(video_info->width, video_info->height); gfx_display_set_viewport(video_info->width, video_info->height);
@ -2190,9 +2196,7 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
ozone_draw_osk(ozone, video_info, label, str); ozone_draw_osk(ozone, video_info, label, str);
} }
else else
{
ozone_draw_messagebox(ozone, video_info, ozone->pending_message); ozone_draw_messagebox(ozone, video_info, ozone->pending_message);
}
} }
font_driver_flush(video_info->width, video_info->height, ozone->fonts.footer, video_info); font_driver_flush(video_info->width, video_info->height, ozone->fonts.footer, video_info);