diff --git a/menu/drivers/ozone/ozone_entries.c b/menu/drivers/ozone/ozone_entries.c index 3b378af789..9d65f627a7 100644 --- a/menu/drivers/ozone/ozone_entries.c +++ b/menu/drivers/ozone/ozone_entries.c @@ -360,8 +360,8 @@ void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_info, size_t i, y, entries_end; float sidebar_offset, bottom_boundary, invert, alpha_anim; unsigned video_info_height, video_info_width, entry_width, button_height; - settings_t *settings = config_get_ptr(); - + settings_t *settings = config_get_ptr(); + bool use_smooth_ticker = settings->bools.menu_ticker_smooth; bool old_list = selection_buf == ozone->selection_buf_old; int x_offset = 0; size_t selection_y = 0; /* 0 means no selection (we assume that no entry has y = 0) */ @@ -369,6 +369,9 @@ void ozone_draw_entries(ozone_handle_t *ozone, video_frame_info_t *video_info, int entry_padding = ozone_get_entries_padding(ozone, old_list); float scale_factor = ozone->last_scale_factor; + enum gfx_animation_ticker_type + menu_ticker_type = (enum gfx_animation_ticker_type) + settings->uints.menu_ticker_type; menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &i); @@ -464,17 +467,18 @@ border_iterate: for (i = 0; i < entries_end; i++) { + char rich_label[255]; + char entry_value_ticker[255]; + char wrapped_sublabel_str[MENU_SUBLABEL_MAX_LENGTH]; uintptr_t tex; menu_entry_t entry; gfx_animation_ctx_ticker_t ticker; gfx_animation_ctx_ticker_smooth_t ticker_smooth; - static const char* const ticker_spacer = OZONE_TICKER_SPACER; - unsigned ticker_x_offset = 0; - unsigned ticker_str_width = 0; - int value_x_offset = 0; - char rich_label[255]; - char entry_value_ticker[255]; - char wrapped_sublabel_str[MENU_SUBLABEL_MAX_LENGTH]; + unsigned ticker_x_offset = 0; + unsigned ticker_str_width = 0; + int value_x_offset = 0; + static const char* const + ticker_spacer = OZONE_TICKER_SPACER; const char *sublabel_str = NULL; ozone_node_t *node = NULL; const char *entry_rich_label = NULL; @@ -482,7 +486,6 @@ border_iterate: bool entry_selected = false; int text_offset = -ozone->dimensions.entry_icon_padding - ozone->dimensions.entry_icon_size; float *icon_color = NULL; - bool use_smooth_ticker = settings->bools.menu_ticker_smooth; /* Initial ticker configuration */ if (use_smooth_ticker) @@ -490,7 +493,7 @@ border_iterate: ticker_smooth.idx = gfx_animation_get_ticker_pixel_idx(); ticker_smooth.font = ozone->fonts.entries_label; 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.x_offset = &ticker_x_offset; ticker_smooth.dst_str_width = &ticker_str_width; @@ -498,12 +501,13 @@ border_iterate: else { 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; } - entry_selected = selection == i; - node = (ozone_node_t*) file_list_get_userdata_at_offset(selection_buf, i); + entry_selected = selection == i; + node = (ozone_node_t*) + file_list_get_userdata_at_offset(selection_buf, i); menu_entry_init(&entry); entry.path_enabled = false; @@ -822,6 +826,9 @@ void ozone_draw_thumbnail_bar(ozone_handle_t *ozone, video_frame_info_t *video_i settings_t *settings = config_get_ptr(); bool scroll_content_metadata = settings->bools.ozone_scroll_content_metadata; bool use_smooth_ticker = settings->bools.menu_ticker_smooth; + enum gfx_animation_ticker_type + menu_ticker_type = (enum gfx_animation_ticker_type) + settings->uints.menu_ticker_type; unsigned y = (unsigned)left_thumbnail_y_position; unsigned separator_padding = ozone->dimensions.sidebar_entry_icon_padding*2; unsigned column_x = x_position + separator_padding; @@ -833,27 +840,26 @@ void ozone_draw_thumbnail_bar(ozone_handle_t *ozone, video_frame_info_t *video_i { ticker_smooth.idx = gfx_animation_get_ticker_pixel_idx(); ticker_smooth.font_scale = 1.0f; - ticker_smooth.type_enum = (enum gfx_animation_ticker_type) - settings->uints.menu_ticker_type; - ticker_smooth.spacer = ticker_spacer; - ticker_smooth.x_offset = &ticker_x_offset; - ticker_smooth.dst_str_width = NULL; + ticker_smooth.type_enum = menu_ticker_type; + ticker_smooth.spacer = ticker_spacer; + ticker_smooth.x_offset = &ticker_x_offset; + ticker_smooth.dst_str_width = NULL; - ticker_smooth.font = ozone->fonts.footer; - ticker_smooth.selected = true; - ticker_smooth.field_width = sidebar_width - (separator_padding * 2); - ticker_smooth.dst_str = ticker_buf; - ticker_smooth.dst_str_len = sizeof(ticker_buf); + ticker_smooth.font = ozone->fonts.footer; + ticker_smooth.selected = true; + ticker_smooth.field_width = sidebar_width - (separator_padding * 2); + ticker_smooth.dst_str = ticker_buf; + ticker_smooth.dst_str_len = sizeof(ticker_buf); } else { - ticker.idx = gfx_animation_get_ticker_idx(); - ticker.type_enum = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type; - ticker.spacer = ticker_spacer; + ticker.idx = gfx_animation_get_ticker_idx(); + ticker.type_enum = menu_ticker_type; + ticker.spacer = ticker_spacer; - ticker.selected = true; - ticker.len = (sidebar_width - (separator_padding * 2)) / ozone->footer_font_glyph_width; - ticker.s = ticker_buf; + ticker.selected = true; + ticker.len = (sidebar_width - (separator_padding * 2)) / ozone->footer_font_glyph_width; + ticker.s = ticker_buf; } } diff --git a/menu/drivers/ozone/ozone_sidebar.c b/menu/drivers/ozone/ozone_sidebar.c index ad3f1d2818..7e99f3f738 100644 --- a/menu/drivers/ozone/ozone_sidebar.c +++ b/menu/drivers/ozone/ozone_sidebar.c @@ -113,10 +113,12 @@ void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info) gfx_animation_ctx_ticker_smooth_t ticker_smooth; static const char* const ticker_spacer = OZONE_TICKER_SPACER; unsigned ticker_x_offset = 0; - settings_t *settings = config_get_ptr(); - uint32_t text_alpha = ozone->animations.sidebar_text_alpha * 255.0f; - bool use_smooth_ticker = settings->bools.menu_ticker_smooth; - float scale_factor = ozone->last_scale_factor; + settings_t *settings = config_get_ptr(); + uint32_t text_alpha = ozone->animations.sidebar_text_alpha * 255.0f; + bool use_smooth_ticker = settings->bools.menu_ticker_smooth; + float scale_factor = ozone->last_scale_factor; + enum gfx_animation_ticker_type + menu_ticker_type = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type; /* Initial ticker configuration */ if (use_smooth_ticker) @@ -124,7 +126,7 @@ void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info) ticker_smooth.idx = gfx_animation_get_ticker_pixel_idx(); ticker_smooth.font = ozone->fonts.sidebar; 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.x_offset = &ticker_x_offset; ticker_smooth.dst_str_width = NULL; @@ -132,7 +134,7 @@ void ozone_draw_sidebar(ozone_handle_t *ozone, video_frame_info_t *video_info) else { 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; } @@ -373,6 +375,7 @@ void ozone_sidebar_update_collapse(ozone_handle_t *ozone, bool allow_animation) settings_t *settings = config_get_ptr(); bool is_playlist = ozone_is_playlist(ozone, false); gfx_animation_ctx_tag tag = (uintptr_t) &ozone->sidebar_collapsed; + bool collapse_sidebar = settings->bools.ozone_collapse_sidebar; entry.easing_enum = EASING_OUT_QUAD; entry.tag = tag; @@ -382,7 +385,7 @@ void ozone_sidebar_update_collapse(ozone_handle_t *ozone, bool allow_animation) gfx_animation_kill_by_tag(&tag); /* Collapse it */ - if (settings->bools.ozone_collapse_sidebar || (is_playlist && !ozone->cursor_in_sidebar)) + if (collapse_sidebar || (is_playlist && !ozone->cursor_in_sidebar)) { if (allow_animation) { @@ -408,7 +411,7 @@ void ozone_sidebar_update_collapse(ozone_handle_t *ozone, bool allow_animation) } } /* Show it */ - else if (ozone->cursor_in_sidebar || (!is_playlist && !settings->bools.ozone_collapse_sidebar)) + else if (ozone->cursor_in_sidebar || (!is_playlist && !collapse_sidebar)) { if (allow_animation) { @@ -439,20 +442,17 @@ void ozone_sidebar_update_collapse(ozone_handle_t *ozone, bool allow_animation) ozone_entries_update_thumbnail_bar(ozone, is_playlist, allow_animation); } -static float ozone_sidebar_get_scroll_y(ozone_handle_t *ozone, unsigned video_height) +static float ozone_sidebar_get_scroll_y( + ozone_handle_t *ozone, unsigned video_height) { - float scroll_y = ozone->animations.scroll_y_sidebar; - float selected_position_y; - float current_selection_middle_onscreen; - float bottom_boundary; - float entries_middle; - float entries_height; - - selected_position_y = ozone_get_selected_sidebar_y_position(ozone); - current_selection_middle_onscreen = ozone->dimensions.header_height + ozone->dimensions.spacer_1px + ozone->animations.scroll_y_sidebar + selected_position_y + ozone->dimensions.sidebar_entry_height / 2.0f; - bottom_boundary = (float)video_height - (ozone->dimensions.header_height + ozone->dimensions.spacer_1px) - ozone->dimensions.footer_height; - entries_middle = (float)video_height / 2.0f; - entries_height = ozone_get_sidebar_height(ozone); + float scroll_y = ozone->animations.scroll_y_sidebar; + float selected_position_y = + ozone_get_selected_sidebar_y_position(ozone); + float current_selection_middle_onscreen = + ozone->dimensions.header_height + ozone->dimensions.spacer_1px + ozone->animations.scroll_y_sidebar + selected_position_y + ozone->dimensions.sidebar_entry_height / 2.0f; + float bottom_boundary = (float)video_height - (ozone->dimensions.header_height + ozone->dimensions.spacer_1px) - ozone->dimensions.footer_height; + float entries_middle = (float)video_height / 2.0f; + float entries_height = ozone_get_sidebar_height(ozone); if (current_selection_middle_onscreen != entries_middle) scroll_y = ozone->animations.scroll_y_sidebar - (current_selection_middle_onscreen - entries_middle); @@ -461,7 +461,7 @@ static float ozone_sidebar_get_scroll_y(ozone_handle_t *ozone, unsigned video_he scroll_y = bottom_boundary - entries_height - ozone->dimensions.sidebar_padding_vertical; if (scroll_y > 0.0f) - scroll_y = 0.0f; + return 0.0f; return scroll_y; } @@ -470,12 +470,10 @@ void ozone_sidebar_goto(ozone_handle_t *ozone, unsigned new_selection) { unsigned video_info_height; struct gfx_animation_ctx_entry entry; - gfx_animation_ctx_tag tag; + gfx_animation_ctx_tag tag = (uintptr_t)ozone; video_driver_get_size(NULL, &video_info_height); - tag = (uintptr_t)ozone; - if (ozone->categories_selection_ptr != new_selection) { ozone->categories_active_idx_old = ozone->categories_selection_ptr; @@ -533,6 +531,7 @@ void ozone_refresh_sidebars(ozone_handle_t *ozone, unsigned video_height) gfx_animation_ctx_tag thumbnail_tag = (uintptr_t)&ozone->show_thumbnail_bar; gfx_animation_ctx_tag scroll_tag = (uintptr_t)ozone; bool is_playlist = ozone_is_playlist(ozone, false); + bool collapse_sidebar = settings->bools.ozone_collapse_sidebar; /* Kill any existing animations */ gfx_animation_kill_by_tag(&collapsed_tag); @@ -542,13 +541,13 @@ void ozone_refresh_sidebars(ozone_handle_t *ozone, unsigned video_height) gfx_animation_kill_by_tag(&scroll_tag); /* Set sidebar width */ - if (settings->bools.ozone_collapse_sidebar || (is_playlist && !ozone->cursor_in_sidebar)) + if (collapse_sidebar || (is_playlist && !ozone->cursor_in_sidebar)) { ozone->animations.sidebar_text_alpha = 0.0f; ozone->dimensions.sidebar_width = ozone->dimensions.sidebar_width_collapsed; ozone->sidebar_collapsed = true; } - else if (ozone->cursor_in_sidebar || (!is_playlist && !settings->bools.ozone_collapse_sidebar)) + else if (ozone->cursor_in_sidebar || (!is_playlist && !collapse_sidebar)) { ozone->animations.sidebar_text_alpha = 1.0f; ozone->dimensions.sidebar_width = ozone->dimensions.sidebar_width_normal; @@ -623,20 +622,20 @@ void ozone_change_tab(ozone_handle_t *ozone, void ozone_init_horizontal_list(ozone_handle_t *ozone) { menu_displaylist_info_t info; - settings_t *settings = config_get_ptr(); - + settings_t *settings = config_get_ptr(); + const char *dir_playlist = settings->paths.directory_playlist; + bool menu_content_show_playlists = settings->bools.menu_content_show_playlists; menu_displaylist_info_init(&info); info.list = ozone->horizontal_list; - info.path = strdup( - settings->paths.directory_playlist); + info.path = strdup(dir_playlist); info.label = strdup( msg_hash_to_str(MENU_ENUM_LABEL_PLAYLISTS_TAB)); info.exts = strdup("lpl"); info.type_default = FILE_TYPE_PLAIN; info.enum_idx = MENU_ENUM_LABEL_PLAYLISTS_TAB; - if (settings->bools.menu_content_show_playlists && !string_is_empty(info.path)) + if (menu_content_show_playlists && !string_is_empty(info.path)) { if (menu_displaylist_ctl(DISPLAYLIST_DATABASE_PLAYLISTS_HORIZONTAL, &info)) menu_displaylist_process(&info); @@ -674,8 +673,7 @@ void ozone_context_reset_horizontal_list(ozone_handle_t *ozone) char *chr; bool hyphen_found; settings_t *settings = config_get_ptr(); - - size_t list_size = ozone_list_get_size(ozone, MENU_LIST_HORIZONTAL); + size_t list_size = ozone_list_get_size(ozone, MENU_LIST_HORIZONTAL); for (i = 0; i < list_size; i++) { @@ -788,6 +786,9 @@ void ozone_context_reset_horizontal_list(ozone_handle_t *ozone) chr = title_noext; hyphen_found = false; + /* TODO/FIXME - why is there a while loop here? + * Does 'something' set ozone_truncate_playlist_name + * ever to false while this is running? */ while (settings->bools.ozone_truncate_playlist_name) { /* Check for "- " */ diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index 9736f219ea..402d7f27ca 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -1353,23 +1353,25 @@ static void rgui_render_particle_effect(rgui_t *rgui) /* Give speed factor a long, awkward name to minimise * risk of clashing with specific particle effect * implementation variables... */ - float global_speed_factor; - settings_t *settings = config_get_ptr(); + float global_speed_factor = 1.0f; + settings_t *settings = config_get_ptr(); + float particle_effect_speed = settings ? settings->floats.menu_rgui_particle_effect_speed : 0.0f; /* Sanity check */ - if (!rgui || !rgui_frame_buf.data || !settings) + if (!rgui || !rgui_frame_buf.data) return; gfx_display_get_fb_size(&fb_width, &fb_height, &fb_pitch); /* Adjust global animation speed */ /* > Apply user configured speed multiplier */ - global_speed_factor = - (settings->floats.menu_rgui_particle_effect_speed > 0.0001f) ? - settings->floats.menu_rgui_particle_effect_speed : 1.0f; + if (particle_effect_speed > 0.0001f) + global_speed_factor = particle_effect_speed ; + /* > Account for non-standard frame times * (high/low refresh rates, or frame drops) */ - global_speed_factor *= gfx_animation_get_delta_time() / particle_effect_period; + global_speed_factor *= gfx_animation_get_delta_time() + / particle_effect_period; /* Note: It would be more elegant to have 'update' and 'draw' * as separate functions, since 'update' is the part that @@ -1696,11 +1698,13 @@ static bool request_thumbnail( static bool downscale_thumbnail(rgui_t *rgui, unsigned max_width, unsigned max_height, struct texture_image *image_src, struct texture_image *image_dst) { - settings_t *settings = config_get_ptr(); - /* Determine output dimensions */ - float display_aspect_ratio = (float)max_width / (float)max_height; - float aspect_ratio = (float)image_src->width / (float)image_src->height; + float display_aspect_ratio = (float)max_width / (float)max_height; + float aspect_ratio = (float)image_src->width + / (float)image_src->height; + settings_t *settings = config_get_ptr(); + unsigned thumbnail_downscaler = settings->uints.menu_rgui_thumbnail_downscaler; + if (aspect_ratio > display_aspect_ratio) { image_dst->width = max_width; @@ -1724,7 +1728,7 @@ static bool downscale_thumbnail(rgui_t *rgui, unsigned max_width, unsigned max_h return false; /* Determine scaling method */ - if (settings->uints.menu_rgui_thumbnail_downscaler == RGUI_THUMB_SCALE_POINT) + if (thumbnail_downscaler == RGUI_THUMB_SCALE_POINT) { uint32_t x_ratio, y_ratio; unsigned x_src, y_src; @@ -1762,7 +1766,7 @@ static bool downscale_thumbnail(rgui_t *rgui, unsigned max_width, unsigned max_h rgui->image_scaler.out_stride = image_dst->width * sizeof(uint32_t); rgui->image_scaler.out_fmt = SCALER_FMT_ARGB8888; - rgui->image_scaler.scaler_type = (settings->uints.menu_rgui_thumbnail_downscaler == RGUI_THUMB_SCALE_SINC) ? + rgui->image_scaler.scaler_type = (thumbnail_downscaler == RGUI_THUMB_SCALE_SINC) ? SCALER_TYPE_SINC : SCALER_TYPE_BILINEAR; /* This reset is redundant, since scaler_ctx_gen_filter() @@ -1852,9 +1856,7 @@ static bool rgui_load_image(void *userdata, void *data, enum menu_image_type typ settings_t *settings = config_get_ptr(); if (!rgui || !settings) - { return false; - } if (!data) { @@ -1862,15 +1864,19 @@ static bool rgui_load_image(void *userdata, void *data, enum menu_image_type typ * data, but we still have to decrement any thumbnail * queues (otherwise further thumbnail processing will * be blocked) */ - if (type == MENU_IMAGE_THUMBNAIL) + switch (type) { - if (rgui->thumbnail_queue_size > 0) - rgui->thumbnail_queue_size--; - } - else if (type == MENU_IMAGE_LEFT_THUMBNAIL) - { - if (rgui->left_thumbnail_queue_size > 0) - rgui->left_thumbnail_queue_size--; + case MENU_IMAGE_THUMBNAIL: + if (rgui->thumbnail_queue_size > 0) + rgui->thumbnail_queue_size--; + break; + case MENU_IMAGE_LEFT_THUMBNAIL: + if (rgui->left_thumbnail_queue_size > 0) + rgui->left_thumbnail_queue_size--; + break; + case MENU_IMAGE_NONE: + default: + break; } return false; @@ -2188,9 +2194,10 @@ static void load_custom_theme(rgui_t *rgui, rgui_theme_t *theme_colors, const ch char *wallpaper_key = NULL; settings_t *settings = config_get_ptr(); bool success = false; + unsigned rgui_aspect_ratio = settings->uints.menu_rgui_aspect_ratio; /* Determine which type of wallpaper to load */ - switch (settings->uints.menu_rgui_aspect_ratio) + switch (rgui_aspect_ratio) { case RGUI_ASPECT_RATIO_16_9: case RGUI_ASPECT_RATIO_16_9_CENTRE: @@ -2339,13 +2346,17 @@ static void rgui_cache_background(rgui_t *rgui) static void prepare_rgui_colors(rgui_t *rgui, settings_t *settings) { rgui_theme_t theme_colors; - rgui->color_theme = settings->uints.menu_rgui_color_theme; - rgui->show_wallpaper = false; + unsigned rgui_color_theme = settings->uints.menu_rgui_color_theme; + const char *rgui_theme_preset = settings->paths.path_rgui_theme_preset; + + rgui->color_theme = rgui_color_theme; + rgui->show_wallpaper = false; if (rgui->color_theme == RGUI_THEME_CUSTOM) { - memcpy(rgui->theme_preset_path, settings->paths.path_rgui_theme_preset, sizeof(rgui->theme_preset_path)); - load_custom_theme(rgui, &theme_colors, settings->paths.path_rgui_theme_preset); + memcpy(rgui->theme_preset_path, + rgui_theme_preset, sizeof(rgui->theme_preset_path)); + load_custom_theme(rgui, &theme_colors, rgui_theme_preset); } else { @@ -2361,6 +2372,7 @@ static void prepare_rgui_colors(rgui_t *rgui, settings_t *settings) theme_colors.shadow_color = current_theme->shadow_color; theme_colors.particle_color = current_theme->particle_color; } + rgui->colors.hover_color = argb32_to_pixel_platform_format(theme_colors.hover_color); rgui->colors.normal_color = argb32_to_pixel_platform_format(theme_colors.normal_color); rgui->colors.title_color = argb32_to_pixel_platform_format(theme_colors.title_color); @@ -3204,20 +3216,32 @@ static void rgui_render(void *data, { gfx_animation_ctx_ticker_t ticker; gfx_animation_ctx_ticker_smooth_t ticker_smooth; - static const char* const ticker_spacer = RGUI_TICKER_SPACER; - bool use_smooth_ticker; unsigned x, y; size_t i, end, fb_pitch, old_start, new_start; unsigned fb_width, fb_height; - int bottom; + static bool display_kb = false; + static const char* const + ticker_spacer = RGUI_TICKER_SPACER; + int bottom = 0; unsigned ticker_x_offset = 0; size_t entries_end = menu_entries_get_size(); bool msg_force = false; bool fb_size_changed = false; settings_t *settings = config_get_ptr(); rgui_t *rgui = (rgui_t*)data; - - static bool display_kb = false; + enum gfx_animation_ticker_type + menu_ticker_type = (enum gfx_animation_ticker_type) + settings->uints.menu_ticker_type; + bool rgui_inline_thumbnails = settings->bools.menu_rgui_inline_thumbnails; + bool menu_battery_level_enable = settings->bools.menu_battery_level_enable; + bool use_smooth_ticker = settings->bools.menu_ticker_smooth; + bool rgui_swap_thumbnails = settings->bools.menu_rgui_swap_thumbnails; + bool rgui_full_width_layout = settings->bools.menu_rgui_full_width_layout; + bool menu_show_sublabels = settings->bools.menu_show_sublabels; + bool video_fullscreen = settings->bools.video_fullscreen; + bool menu_mouse_enable = settings->bools.menu_mouse_enable; + bool menu_core_enable = settings->bools.menu_core_enable; + bool menu_timedate_enable = settings->bools.menu_timedate_enable; bool current_display_cb = false; bool show_fs_thumbnail = @@ -3226,7 +3250,7 @@ static void rgui_render(void *data, (fs_thumbnail.is_valid || (rgui->thumbnail_queue_size > 0)); /* Sanity check */ - if (!rgui || !rgui_frame_buf.data || !settings) + if (!rgui || !rgui_frame_buf.data) return; /* Apply pending aspect ratio update */ @@ -3246,7 +3270,9 @@ static void rgui_render(void *data, && !msg_force) return; - if (!display_kb && !current_display_cb && (is_idle || !gfx_display_get_update_pending())) + if ( !display_kb && + !current_display_cb && + (is_idle || !gfx_display_get_update_pending())) return; } @@ -3257,7 +3283,8 @@ static void rgui_render(void *data, /* If the framebuffer changed size, or the background config has * changed, recache the background buffer */ - fb_size_changed = (rgui->last_width != fb_width) || (rgui->last_height != fb_height); + fb_size_changed = (rgui->last_width != fb_width) || + (rgui->last_height != fb_height); #if defined(GEKKO) /* Wii gfx driver changes menu framebuffer size at @@ -3273,7 +3300,8 @@ static void rgui_render(void *data, rgui_cache_background(rgui); /* Reinitialise particle effect, if required */ - if (fb_size_changed && (rgui->particle_effect != RGUI_PARTICLE_EFFECT_NONE)) + if (fb_size_changed && + (rgui->particle_effect != RGUI_PARTICLE_EFFECT_NONE)) rgui_init_particle_effect(rgui); rgui->last_width = fb_width; @@ -3291,6 +3319,7 @@ static void rgui_render(void *data, /* Get offset of bottommost entry */ bottom = (int)(entries_end - rgui_term_layout.height); menu_entries_ctl(MENU_ENTRIES_CTL_START_GET, &old_start); + if (old_start > (unsigned)bottom) { /* MENU_ENTRIES_CTL_SET_START requires a pointer of @@ -3355,22 +3384,20 @@ static void rgui_render(void *data, /* We use a single ticker for all text animations, * with the following configuration: */ - use_smooth_ticker = settings->bools.menu_ticker_smooth; if (use_smooth_ticker) { ticker_smooth.idx = gfx_animation_get_ticker_pixel_idx(); ticker_smooth.font = NULL; ticker_smooth.glyph_width = FONT_WIDTH_STRIDE; - 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.dst_str_width = NULL; } else { - ticker.idx = gfx_animation_get_ticker_idx(); - ticker.type_enum = (enum gfx_animation_ticker_type)settings->uints.menu_ticker_type; - ticker.spacer = ticker_spacer; + ticker.idx = gfx_animation_get_ticker_idx(); + ticker.type_enum = menu_ticker_type; + ticker.spacer = ticker_spacer; } /* Note: On-screen keyboard takes precedence over @@ -3449,7 +3476,7 @@ static void rgui_render(void *data, unsigned term_end_x = rgui_term_layout.start_x + (rgui_term_layout.width * FONT_WIDTH_STRIDE); unsigned timedate_x = term_end_x - (5 * FONT_WIDTH_STRIDE); unsigned core_name_len = ((timedate_x - rgui_term_layout.start_x) / FONT_WIDTH_STRIDE) - 3; - bool show_mini_thumbnails = rgui->is_playlist && settings->bools.menu_rgui_inline_thumbnails; + bool show_mini_thumbnails = rgui->is_playlist && rgui_inline_thumbnails; bool show_thumbnail = false; bool show_left_thumbnail = false; unsigned thumbnail_panel_width = 0; @@ -3481,7 +3508,7 @@ static void rgui_render(void *data, } /* Show battery indicator, if required */ - if (settings->bools.menu_battery_level_enable) + if (menu_battery_level_enable) { gfx_display_ctx_powerstate_t powerstate; char percent_str[12]; @@ -3501,8 +3528,9 @@ static void rgui_render(void *data, { unsigned powerstate_x; enum rgui_symbol_type powerstate_symbol; - uint16_t powerstate_color = (powerstate.percent > BATTERY_WARN_THRESHOLD || powerstate.charging) ? - rgui->colors.title_color : rgui->colors.hover_color; + uint16_t powerstate_color = (powerstate.percent > BATTERY_WARN_THRESHOLD || powerstate.charging) + ? rgui->colors.title_color + : rgui->colors.hover_color; if (powerstate.charging) powerstate_symbol = RGUI_SYMBOL_CHARGING; @@ -3632,8 +3660,9 @@ static void rgui_render(void *data, /* If showing mini thumbnails, reduce title field length accordingly */ if (show_mini_thumbnails) { - unsigned term_offset = settings->bools.menu_rgui_swap_thumbnails ? - (unsigned)(rgui_term_layout.height - (i - new_start) - 1) : (i - new_start); + unsigned term_offset = rgui_swap_thumbnails + ? (unsigned)(rgui_term_layout.height - (i - new_start) - 1) + : (i - new_start); unsigned thumbnail_width = 0; /* Note: @@ -3668,7 +3697,7 @@ static void rgui_render(void *data, /* Determine whether entry has a value component */ if (!string_is_empty(entry_value)) { - if (settings->bools.menu_rgui_full_width_layout) + if (rgui_full_width_layout) { /* Resize fields according to actual length of value string */ entry_value_len = (unsigned)strlen(entry_value); @@ -3763,7 +3792,7 @@ static void rgui_render(void *data, } /* Print menu sublabel/core name (if required) */ - if (settings->bools.menu_show_sublabels && !string_is_empty(rgui->menu_sublabel)) + if (menu_show_sublabels && !string_is_empty(rgui->menu_sublabel)) { char sublabel_buf[MENU_SUBLABEL_MAX_LENGTH]; sublabel_buf[0] = '\0'; @@ -3796,7 +3825,7 @@ static void rgui_render(void *data, rgui_term_layout.start_y + 2, sublabel_buf, rgui->colors.hover_color, rgui->colors.shadow_color); } - else if (settings->bools.menu_core_enable) + else if (menu_core_enable) { char core_title[64]; char core_title_buf[64]; @@ -3834,7 +3863,7 @@ static void rgui_render(void *data, } /* Print clock (if required) */ - if (settings->bools.menu_timedate_enable) + if (menu_timedate_enable) { gfx_display_ctx_datetime_t datetime; char timedate[16]; @@ -3865,10 +3894,9 @@ static void rgui_render(void *data, if (rgui->mouse_show) { - bool cursor_visible = settings->bools.video_fullscreen || - !video_driver_has_windowed(); + bool cursor_visible = video_fullscreen || !video_driver_has_windowed(); - if (settings->bools.menu_mouse_enable && cursor_visible) + if (menu_mouse_enable && cursor_visible) rgui_blit_cursor(rgui); } } @@ -3910,7 +3938,8 @@ static void rgui_thumbnail_free(thumbnail_t *thumbnail) thumbnail->data = NULL; } -bool rgui_is_video_config_equal(rgui_video_settings_t *config_a, rgui_video_settings_t *config_b) +bool rgui_is_video_config_equal( + rgui_video_settings_t *config_a, rgui_video_settings_t *config_b) { return (config_a->aspect_ratio_idx == config_b->aspect_ratio_idx) && (config_a->viewport.width == config_b->viewport.width) && @@ -3930,13 +3959,14 @@ static void rgui_get_video_config(rgui_video_settings_t *video_settings) return; video_settings->aspect_ratio_idx = settings->uints.video_aspect_ratio_idx; - video_settings->viewport.width = custom_vp->width; - video_settings->viewport.height = custom_vp->height; - video_settings->viewport.x = custom_vp->x; - video_settings->viewport.y = custom_vp->y; + video_settings->viewport.width = custom_vp->width; + video_settings->viewport.height = custom_vp->height; + video_settings->viewport.x = custom_vp->x; + video_settings->viewport.y = custom_vp->y; } -static void rgui_set_video_config(rgui_t *rgui, rgui_video_settings_t *video_settings, bool delay_update) +static void rgui_set_video_config(rgui_t *rgui, + rgui_video_settings_t *video_settings, bool delay_update) { settings_t *settings = config_get_ptr(); /* Could use settings->video_viewport_custom directly, @@ -3947,10 +3977,10 @@ static void rgui_set_video_config(rgui_t *rgui, rgui_video_settings_t *video_set return; settings->uints.video_aspect_ratio_idx = video_settings->aspect_ratio_idx; - custom_vp->width = video_settings->viewport.width; - custom_vp->height = video_settings->viewport.height; - custom_vp->x = video_settings->viewport.x; - custom_vp->y = video_settings->viewport.y; + custom_vp->width = video_settings->viewport.width; + custom_vp->height = video_settings->viewport.height; + custom_vp->x = video_settings->viewport.x; + custom_vp->y = video_settings->viewport.y; aspectratio_lut[ASPECT_RATIO_CUSTOM].value = (float)custom_vp->width / custom_vp->height; @@ -3968,10 +3998,12 @@ static void rgui_set_video_config(rgui_t *rgui, rgui_video_settings_t *video_set * lock is enabled */ static void rgui_update_menu_viewport(rgui_t *rgui) { - settings_t *settings = config_get_ptr(); size_t fb_pitch; - unsigned fb_width, fb_height; struct video_viewport vp; + unsigned fb_width, fb_height; + bool do_integer_scaling = false; + settings_t *settings = config_get_ptr(); + unsigned aspect_ratio_lock = settings ? settings->uints.menu_rgui_aspect_ratio_lock : 0; if (!settings) return; @@ -3990,6 +4022,7 @@ static void rgui_update_menu_viewport(rgui_t *rgui) /* The Wii is a special case, since it uses anamorphic * widescreen. The display aspect ratio cannot therefore * be determined simply by dividing viewport width by height */ + float delta; #ifdef HW_RVL float device_aspect = (CONF_GetAspectRatio() == CONF_ASPECT_4_3) ? (4.0f / 3.0f) : (16.0f / 9.0f); @@ -3997,7 +4030,6 @@ static void rgui_update_menu_viewport(rgui_t *rgui) float device_aspect = (4.0f / 3.0f); #endif float desired_aspect = (float)fb_width / (float)fb_height; - float delta; if (device_aspect > desired_aspect) { @@ -4013,13 +4045,16 @@ static void rgui_update_menu_viewport(rgui_t *rgui) } #else /* Check whether we need to perform integer scaling */ - bool do_integer_scaling = (settings->uints.menu_rgui_aspect_ratio_lock == RGUI_ASPECT_RATIO_LOCK_INTEGER); + do_integer_scaling = (aspect_ratio_lock + == RGUI_ASPECT_RATIO_LOCK_INTEGER); if (do_integer_scaling) { - unsigned width_scale = (vp.full_width / fb_width); + unsigned width_scale = (vp.full_width / fb_width); unsigned height_scale = (vp.full_height / fb_height); - unsigned scale = (width_scale <= height_scale) ? width_scale : height_scale; + unsigned scale = (width_scale <= height_scale) + ? width_scale + : height_scale; if (scale > 0) { @@ -4032,31 +4067,37 @@ static void rgui_update_menu_viewport(rgui_t *rgui) if (!do_integer_scaling) { - float display_aspect_ratio = (float)vp.full_width / (float)vp.full_height; - float aspect_ratio = (float)fb_width / (float)fb_height; + float display_aspect_ratio = (float)vp.full_width + / (float)vp.full_height; + float aspect_ratio = (float)fb_width + / (float)fb_height; if (aspect_ratio > display_aspect_ratio) { - rgui->menu_video_settings.viewport.width = vp.full_width; + rgui->menu_video_settings.viewport.width = vp.full_width; rgui->menu_video_settings.viewport.height = fb_height * vp.full_width / fb_width; } else { rgui->menu_video_settings.viewport.height = vp.full_height; - rgui->menu_video_settings.viewport.width = fb_width * vp.full_height / fb_height; + rgui->menu_video_settings.viewport.width = fb_width * vp.full_height / fb_height; } } #endif /* Sanity check */ - rgui->menu_video_settings.viewport.width = (rgui->menu_video_settings.viewport.width < 1) ? - 1 : rgui->menu_video_settings.viewport.width; - rgui->menu_video_settings.viewport.height = (rgui->menu_video_settings.viewport.height < 1) ? - 1 : rgui->menu_video_settings.viewport.height; + rgui->menu_video_settings.viewport.width = + (rgui->menu_video_settings.viewport.width < 1) + ? 1 + : rgui->menu_video_settings.viewport.width; + rgui->menu_video_settings.viewport.height = + (rgui->menu_video_settings.viewport.height < 1) + ? 1 + : rgui->menu_video_settings.viewport.height; } else { - rgui->menu_video_settings.viewport.width = 1; + rgui->menu_video_settings.viewport.width = 1; rgui->menu_video_settings.viewport.height = 1; } @@ -4067,7 +4108,9 @@ static void rgui_update_menu_viewport(rgui_t *rgui) static bool rgui_set_aspect_ratio(rgui_t *rgui, bool delay_update) { unsigned base_term_width; - settings_t *settings = config_get_ptr(); + settings_t *settings = config_get_ptr(); + unsigned rgui_aspect_ratio = settings->uints.menu_rgui_aspect_ratio; + unsigned aspect_ratio_lock = settings->uints.menu_rgui_aspect_ratio_lock; rgui_framebuffer_free(); rgui_background_free(); @@ -4076,7 +4119,7 @@ static bool rgui_set_aspect_ratio(rgui_t *rgui, bool delay_update) rgui_thumbnail_free(&mini_left_thumbnail); /* Cache new aspect ratio */ - rgui->menu_aspect_ratio = settings->uints.menu_rgui_aspect_ratio; + rgui->menu_aspect_ratio = rgui_aspect_ratio; #if defined(GEKKO) { @@ -4096,7 +4139,8 @@ static bool rgui_set_aspect_ratio(rgui_t *rgui, bool delay_update) if (rgui_frame_buf.height == 240) rgui_frame_buf.width = 424; else - rgui_frame_buf.width = (unsigned)((16.0f / 9.0f) * (float)rgui_frame_buf.height) & ~3; + rgui_frame_buf.width = (unsigned) + ((16.0f / 9.0f) * (float)rgui_frame_buf.height) & ~3; base_term_width = rgui_frame_buf.width; break; case RGUI_ASPECT_RATIO_16_9_CENTRE: @@ -4107,15 +4151,18 @@ static bool rgui_set_aspect_ratio(rgui_t *rgui, bool delay_update) } else { - rgui_frame_buf.width = (unsigned)((16.0f / 9.0f) * (float)rgui_frame_buf.height) & ~3; - base_term_width = (unsigned)(( 4.0f / 3.0f) * (float)rgui_frame_buf.height) & ~3; + rgui_frame_buf.width = (unsigned) + ((16.0f / 9.0f) * (float)rgui_frame_buf.height) & ~3; + base_term_width = (unsigned) + (( 4.0f / 3.0f) * (float)rgui_frame_buf.height) & ~3; } break; case RGUI_ASPECT_RATIO_16_10: if (rgui_frame_buf.height == 240) rgui_frame_buf.width = 384; else - rgui_frame_buf.width = (unsigned)((16.0f / 10.0f) * (float)rgui_frame_buf.height) & ~3; + rgui_frame_buf.width = (unsigned) + ((16.0f / 10.0f) * (float)rgui_frame_buf.height) & ~3; base_term_width = rgui_frame_buf.width; break; case RGUI_ASPECT_RATIO_16_10_CENTRE: @@ -4126,8 +4173,10 @@ static bool rgui_set_aspect_ratio(rgui_t *rgui, bool delay_update) } else { - rgui_frame_buf.width = (unsigned)((16.0f / 10.0f) * (float)rgui_frame_buf.height) & ~3; - base_term_width = (unsigned)(( 4.0f / 3.0f) * (float)rgui_frame_buf.height) & ~3; + rgui_frame_buf.width = (unsigned) + ((16.0f / 10.0f) * (float)rgui_frame_buf.height) & ~3; + base_term_width = (unsigned) + (( 4.0f / 3.0f) * (float)rgui_frame_buf.height) & ~3; } break; default: @@ -4135,7 +4184,8 @@ static bool rgui_set_aspect_ratio(rgui_t *rgui, bool delay_update) if (rgui_frame_buf.height == 240) rgui_frame_buf.width = 320; else - rgui_frame_buf.width = (unsigned)(( 4.0f / 3.0f) * (float)rgui_frame_buf.height) & ~3; + rgui_frame_buf.width = (unsigned) + (( 4.0f / 3.0f) * (float)rgui_frame_buf.height) & ~3; base_term_width = rgui_frame_buf.width; break; } @@ -4182,59 +4232,61 @@ static bool rgui_set_aspect_ratio(rgui_t *rgui, bool delay_update) gfx_display_set_framebuffer_pitch(rgui_frame_buf.width * sizeof(uint16_t)); /* Determine terminal layout */ - rgui_term_layout.start_x = (3 * 5) + 1; - rgui_term_layout.start_y = (3 * 5) + FONT_HEIGHT_STRIDE; - rgui_term_layout.width = (base_term_width - (2 * rgui_term_layout.start_x)) / FONT_WIDTH_STRIDE; - rgui_term_layout.height = (rgui_frame_buf.height - (2 * rgui_term_layout.start_y)) / FONT_HEIGHT_STRIDE; + rgui_term_layout.start_x = (3 * 5) + 1; + rgui_term_layout.start_y = (3 * 5) + FONT_HEIGHT_STRIDE; + rgui_term_layout.width = (base_term_width - (2 * rgui_term_layout.start_x)) / FONT_WIDTH_STRIDE; + rgui_term_layout.height = (rgui_frame_buf.height - (2 * rgui_term_layout.start_y)) / FONT_HEIGHT_STRIDE; rgui_term_layout.value_maxlen = (unsigned)(((float)RGUI_ENTRY_VALUE_MAXLEN * (float)base_term_width / 320.0f) + 0.5); /* > 'Start X/Y' adjustments */ - rgui_term_layout.start_x = (rgui_frame_buf.width - (rgui_term_layout.width * FONT_WIDTH_STRIDE)) / 2; - rgui_term_layout.start_y = (rgui_frame_buf.height - (rgui_term_layout.height * FONT_HEIGHT_STRIDE)) / 2; + rgui_term_layout.start_x = (rgui_frame_buf.width - (rgui_term_layout.width * FONT_WIDTH_STRIDE)) / 2; + rgui_term_layout.start_y = (rgui_frame_buf.height - (rgui_term_layout.height * FONT_HEIGHT_STRIDE)) / 2; /* Allocate background buffer */ rgui_background_buf.width = rgui_frame_buf.width; - rgui_background_buf.height = rgui_frame_buf.height; - rgui_background_buf.data = (uint16_t*)calloc( + rgui_background_buf.height= rgui_frame_buf.height; + rgui_background_buf.data = (uint16_t*)calloc( rgui_background_buf.width * rgui_background_buf.height, sizeof(uint16_t)); if (!rgui_background_buf.data) return false; /* Allocate thumbnail buffer */ - fs_thumbnail.max_width = rgui_frame_buf.width; - fs_thumbnail.max_height = rgui_frame_buf.height; - fs_thumbnail.data = (uint16_t*)calloc( + fs_thumbnail.max_width = rgui_frame_buf.width; + fs_thumbnail.max_height = rgui_frame_buf.height; + fs_thumbnail.data = (uint16_t*)calloc( fs_thumbnail.max_width * fs_thumbnail.max_height, sizeof(uint16_t)); if (!fs_thumbnail.data) return false; /* Allocate mini thumbnail buffers */ - mini_thumbnail_max_width = ((rgui_term_layout.width - 4) > 19 ? 19 : (rgui_term_layout.width - 4)) * FONT_WIDTH_STRIDE; + mini_thumbnail_max_width = ((rgui_term_layout.width - 4) > 19 ? 19 : (rgui_term_layout.width - 4)) * FONT_WIDTH_STRIDE; mini_thumbnail_max_height = (unsigned)((rgui_term_layout.height * FONT_HEIGHT_STRIDE) * 0.5f) - 2; - mini_thumbnail.max_width = mini_thumbnail_max_width; + mini_thumbnail.max_width = mini_thumbnail_max_width; mini_thumbnail.max_height = mini_thumbnail_max_height; - mini_thumbnail.data = (uint16_t*)calloc( - mini_thumbnail.max_width * mini_thumbnail.max_height, sizeof(uint16_t)); + mini_thumbnail.data = (uint16_t*)calloc( + mini_thumbnail.max_width * mini_thumbnail.max_height, + sizeof(uint16_t)); if (!mini_thumbnail.data) return false; - mini_left_thumbnail.max_width = mini_thumbnail_max_width; + mini_left_thumbnail.max_width = mini_thumbnail_max_width; mini_left_thumbnail.max_height = mini_thumbnail_max_height; - mini_left_thumbnail.data = (uint16_t*)calloc( - mini_left_thumbnail.max_width * mini_left_thumbnail.max_height, sizeof(uint16_t)); + mini_left_thumbnail.data = (uint16_t*)calloc( + mini_left_thumbnail.max_width * mini_left_thumbnail.max_height, + sizeof(uint16_t)); if (!mini_left_thumbnail.data) return false; /* Trigger background/display update */ rgui->theme_preset_path[0] = '\0'; - rgui->bg_modified = true; - rgui->force_redraw = true; + rgui->bg_modified = true; + rgui->force_redraw = true; /* If aspect ratio lock is enabled, notify * video driver of change */ - if (settings->uints.menu_rgui_aspect_ratio_lock != RGUI_ASPECT_RATIO_LOCK_NONE) + if (aspect_ratio_lock != RGUI_ASPECT_RATIO_LOCK_NONE) { rgui_update_menu_viewport(rgui); rgui_set_video_config(rgui, &rgui->menu_video_settings, delay_update); @@ -4253,21 +4305,22 @@ static void rgui_menu_animation_update_time( static void *rgui_init(void **userdata, bool video_is_threaded) { unsigned new_font_height; - size_t start; struct video_viewport vp; + size_t start = 0; rgui_t *rgui = NULL; settings_t *settings = config_get_ptr(); + unsigned aspect_ratio_lock = settings->uints.menu_rgui_aspect_ratio_lock; menu_handle_t *menu = (menu_handle_t*)calloc(1, sizeof(*menu)); if (!menu) return NULL; - rgui = (rgui_t*)calloc(1, sizeof(rgui_t)); + rgui = (rgui_t*)calloc(1, sizeof(rgui_t)); if (!rgui) goto error; - *userdata = rgui; + *userdata = rgui; #ifdef HAVE_GFX_WIDGETS /* We have to be somewhat careful here, since some @@ -4288,7 +4341,7 @@ static void *rgui_init(void **userdata, bool video_is_threaded) } #endif - rgui->menu_title[0] = '\0'; + rgui->menu_title[0] = '\0'; rgui->menu_sublabel[0] = '\0'; /* Set pixel format conversion function */ @@ -4300,8 +4353,8 @@ static void *rgui_init(void **userdata, bool video_is_threaded) /* Set aspect ratio * - Allocates frame buffer * - Configures variable 'menu display' settings */ - rgui->menu_aspect_ratio_lock = settings->uints.menu_rgui_aspect_ratio_lock; - rgui->aspect_update_pending = false; + rgui->menu_aspect_ratio_lock = aspect_ratio_lock; + rgui->aspect_update_pending = false; if (!rgui_set_aspect_ratio(rgui, false)) goto error; @@ -4313,7 +4366,6 @@ static void *rgui_init(void **userdata, bool video_is_threaded) rgui->theme_preset_path[0] = '\0'; prepare_rgui_colors(rgui, settings); - start = 0; menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); rgui->scroll_y = 0; @@ -4326,14 +4378,14 @@ static void *rgui_init(void **userdata, bool video_is_threaded) rgui->particle_effect = settings->uints.menu_rgui_particle_effect; rgui->extended_ascii_enable = settings->bools.menu_rgui_extended_ascii; - rgui->last_width = rgui_frame_buf.width; - rgui->last_height = rgui_frame_buf.height; + rgui->last_width = rgui_frame_buf.width; + rgui->last_height = rgui_frame_buf.height; /* Get initial 'window' dimensions */ video_driver_get_viewport_info(&vp); - rgui->window_width = vp.full_width; - rgui->window_height = vp.full_height; - rgui->ignore_resize_events = false; + rgui->window_width = vp.full_width; + rgui->window_height = vp.full_height; + rgui->ignore_resize_events = false; /* Initialise particle effect, if required */ if (rgui->particle_effect != RGUI_PARTICLE_EFFECT_NONE) @@ -4341,18 +4393,19 @@ static void *rgui_init(void **userdata, bool video_is_threaded) /* Set initial 'blit_line/symbol' functions */ rgui_set_blit_functions( - settings->bools.menu_rgui_shadows, settings->bools.menu_rgui_extended_ascii); + settings->bools.menu_rgui_shadows, + settings->bools.menu_rgui_extended_ascii); rgui->thumbnail_path_data = gfx_thumbnail_path_init(); if (!rgui->thumbnail_path_data) goto error; - rgui->thumbnail_queue_size = 0; - rgui->left_thumbnail_queue_size = 0; - rgui->thumbnail_load_pending = false; + rgui->thumbnail_queue_size = 0; + rgui->left_thumbnail_queue_size = 0; + rgui->thumbnail_load_pending = false; rgui->thumbnail_load_trigger_time = 0; /* Ensure that we start with fullscreen thumbnails disabled */ - rgui->show_fs_thumbnail = false; + rgui->show_fs_thumbnail = false; /* Ensure that pointer device starts with well defined * values (shoult not be necessary, but some platforms may @@ -4404,7 +4457,8 @@ static void rgui_set_texture(void) { size_t fb_pitch; unsigned fb_width, fb_height; - settings_t *settings = config_get_ptr(); + settings_t *settings = config_get_ptr(); + unsigned internal_upscale_level = settings->uints.menu_rgui_internal_upscale_level; if (!gfx_display_get_framebuffer_dirty_flag()) return; @@ -4414,7 +4468,7 @@ static void rgui_set_texture(void) gfx_display_unset_framebuffer_dirty_flag(); - if (settings->uints.menu_rgui_internal_upscale_level == RGUI_UPSCALE_NONE) + if (internal_upscale_level == RGUI_UPSCALE_NONE) { video_driver_set_texture_frame(rgui_frame_buf.data, false, fb_width, fb_height, 1.0f); @@ -4441,19 +4495,21 @@ static void rgui_set_texture(void) unsigned x_dst, y_dst; /* Determine output size */ - if (settings->uints.menu_rgui_internal_upscale_level == RGUI_UPSCALE_AUTO) + if (internal_upscale_level == RGUI_UPSCALE_AUTO) { - out_width = ((vp.width / fb_width) + 1) * fb_width; + out_width = ((vp.width / fb_width) + 1) * fb_width; out_height = ((vp.height / fb_height) + 1) * fb_height; } else { - out_width = settings->uints.menu_rgui_internal_upscale_level * fb_width; - out_height = settings->uints.menu_rgui_internal_upscale_level * fb_height; + out_width = internal_upscale_level * fb_width; + out_height = internal_upscale_level * fb_height; } /* Allocate upscaling buffer, if required */ - if ((rgui_upscale_buf.width != out_width) || (rgui_upscale_buf.height != out_height) || !rgui_upscale_buf.data) + if ( (rgui_upscale_buf.width != out_width) || + (rgui_upscale_buf.height != out_height) || + !rgui_upscale_buf.data) { rgui_upscale_buf.width = out_width; rgui_upscale_buf.height = out_height; @@ -4464,13 +4520,15 @@ static void rgui_set_texture(void) rgui_upscale_buf.data = NULL; } - rgui_upscale_buf.data = (uint16_t*)calloc(out_width * out_height, sizeof(uint16_t)); + rgui_upscale_buf.data = (uint16_t*) + calloc(out_width * out_height, sizeof(uint16_t)); if (!rgui_upscale_buf.data) { /* Uh oh... This could mean we don't have enough * memory, so disable upscaling and draw the usual * framebuffer... */ - settings->uints.menu_rgui_internal_upscale_level = RGUI_UPSCALE_NONE; + settings->uints.menu_rgui_internal_upscale_level = + RGUI_UPSCALE_NONE; video_driver_set_texture_frame(rgui_frame_buf.data, false, fb_width, fb_height, 1.0f); return; @@ -4502,12 +4560,11 @@ static void rgui_set_texture(void) static void rgui_navigation_clear(void *data, bool pending_push) { - size_t start; + size_t start = 0; rgui_t *rgui = (rgui_t*)data; if (!rgui) return; - start = 0; menu_entries_ctl(MENU_ENTRIES_CTL_SET_START, &start); rgui->scroll_y = 0; } @@ -4571,7 +4628,7 @@ static void rgui_load_current_thumbnails(rgui_t *rgui, bool download_missing) /* Force a redraw (so 'entry_has_thumbnail' values are * applied immediately) */ - rgui->force_redraw = true; + rgui->force_redraw = true; #ifdef HAVE_NETWORKING /* On demand thumbnail downloads */ @@ -4589,18 +4646,18 @@ static void rgui_load_current_thumbnails(rgui_t *rgui, bool download_missing) static void rgui_scan_selected_entry_thumbnail(rgui_t *rgui, bool force_load) { - bool has_thumbnail = false; - settings_t *settings = config_get_ptr(); - - if (!settings) - return; - - rgui->entry_has_thumbnail = false; - rgui->entry_has_left_thumbnail = false; - rgui->thumbnail_load_pending = false; + bool has_thumbnail = false; + settings_t *settings = config_get_ptr(); + bool rgui_inline_thumbnails = settings->bools.menu_rgui_inline_thumbnails; + unsigned menu_rgui_thumbnail_delay= settings->uints.menu_rgui_thumbnail_delay; + bool network_on_demand_thumbnails = settings->bools.network_on_demand_thumbnails; + rgui->entry_has_thumbnail = false; + rgui->entry_has_left_thumbnail = false; + rgui->thumbnail_load_pending = false; /* Update thumbnail content/path */ - if ((rgui->show_fs_thumbnail || settings->bools.menu_rgui_inline_thumbnails) && rgui->is_playlist) + if ((rgui->show_fs_thumbnail || rgui_inline_thumbnails) + && rgui->is_playlist) { if (gfx_thumbnail_set_content_playlist(rgui->thumbnail_path_data, playlist_get_cached(), menu_navigation_get_selection())) @@ -4608,7 +4665,7 @@ static void rgui_scan_selected_entry_thumbnail(rgui_t *rgui, bool force_load) if (gfx_thumbnail_is_enabled(rgui->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)) has_thumbnail = gfx_thumbnail_update_path(rgui->thumbnail_path_data, GFX_THUMBNAIL_RIGHT); - if (settings->bools.menu_rgui_inline_thumbnails && + if (rgui_inline_thumbnails && gfx_thumbnail_is_enabled(rgui->thumbnail_path_data, GFX_THUMBNAIL_LEFT)) has_thumbnail = gfx_thumbnail_update_path(rgui->thumbnail_path_data, GFX_THUMBNAIL_LEFT) || has_thumbnail; @@ -4619,12 +4676,12 @@ static void rgui_scan_selected_entry_thumbnail(rgui_t *rgui, bool force_load) if (has_thumbnail) { /* Check whether thumbnails should be loaded immediately */ - if ((settings->uints.menu_rgui_thumbnail_delay == 0) || force_load) - rgui_load_current_thumbnails(rgui, settings->bools.network_on_demand_thumbnails); + if ((menu_rgui_thumbnail_delay == 0) || force_load) + rgui_load_current_thumbnails(rgui, network_on_demand_thumbnails); else { /* Schedule a delayed load */ - rgui->thumbnail_load_pending = true; + rgui->thumbnail_load_pending = true; rgui->thumbnail_load_trigger_time = cpu_features_get_time_usec(); } } @@ -4632,9 +4689,11 @@ static void rgui_scan_selected_entry_thumbnail(rgui_t *rgui, bool force_load) static void rgui_update_thumbnail_image(void *userdata) { - rgui_t *rgui = (rgui_t*)userdata; - settings_t *settings = config_get_ptr(); - if (!rgui || !settings) + rgui_t *rgui = (rgui_t*)userdata; + settings_t *settings = config_get_ptr(); + bool rgui_inline_thumbnails = settings->bools.menu_rgui_inline_thumbnails; + + if (!rgui) return; rgui->show_fs_thumbnail = !rgui->show_fs_thumbnail; @@ -4644,21 +4703,21 @@ static void rgui_update_thumbnail_image(void *userdata) * inline thumbnails, then 'fs_thumbnail' and 'mini_thumbnail' * can get mixed up. To avoid this, we simply 'reset' the * currently inactive right thumbnail. */ - if (settings->bools.menu_rgui_inline_thumbnails) + if (rgui_inline_thumbnails) { if (rgui->show_fs_thumbnail) { - mini_thumbnail.width = 0; - mini_thumbnail.height = 0; + mini_thumbnail.width = 0; + mini_thumbnail.height = 0; mini_thumbnail.is_valid = false; - mini_thumbnail.path[0] = '\0'; + mini_thumbnail.path[0] = '\0'; } else { - fs_thumbnail.width = 0; - fs_thumbnail.height = 0; - fs_thumbnail.is_valid = false; - fs_thumbnail.path[0] = '\0'; + fs_thumbnail.width = 0; + fs_thumbnail.height = 0; + fs_thumbnail.is_valid = false; + fs_thumbnail.path[0] = '\0'; } } @@ -4671,31 +4730,32 @@ static void rgui_update_thumbnail_image(void *userdata) static void rgui_refresh_thumbnail_image(void *userdata, unsigned i) { - rgui_t *rgui = (rgui_t*)userdata; - settings_t *settings = config_get_ptr(); + rgui_t *rgui = (rgui_t*)userdata; + settings_t *settings = config_get_ptr(); + bool rgui_inline_thumbnails = settings ? settings->bools.menu_rgui_inline_thumbnails : false; if (!rgui || !settings) return; /* Only refresh thumbnails if thumbnails are enabled */ - if ((rgui->show_fs_thumbnail || settings->bools.menu_rgui_inline_thumbnails) && + if ((rgui->show_fs_thumbnail || rgui_inline_thumbnails) && (gfx_thumbnail_is_enabled(rgui->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) || gfx_thumbnail_is_enabled(rgui->thumbnail_path_data, GFX_THUMBNAIL_LEFT))) { /* In all cases, reset current thumbnails */ - fs_thumbnail.width = 0; - fs_thumbnail.height = 0; - fs_thumbnail.is_valid = false; - fs_thumbnail.path[0] = '\0'; + fs_thumbnail.width = 0; + fs_thumbnail.height = 0; + fs_thumbnail.is_valid = false; + fs_thumbnail.path[0] = '\0'; - mini_thumbnail.width = 0; - mini_thumbnail.height = 0; - mini_thumbnail.is_valid = false; - mini_thumbnail.path[0] = '\0'; + mini_thumbnail.width = 0; + mini_thumbnail.height = 0; + mini_thumbnail.is_valid = false; + mini_thumbnail.path[0] = '\0'; - mini_left_thumbnail.width = 0; - mini_left_thumbnail.height = 0; + mini_left_thumbnail.width = 0; + mini_left_thumbnail.height = 0; mini_left_thumbnail.is_valid = false; - mini_left_thumbnail.path[0] = '\0'; + mini_left_thumbnail.path[0] = '\0'; /* Only load thumbnails if currently viewing a * playlist (note that thumbnails are loaded @@ -4707,15 +4767,16 @@ static void rgui_refresh_thumbnail_image(void *userdata, unsigned i) static void rgui_update_menu_sublabel(rgui_t *rgui) { - size_t selection = menu_navigation_get_selection(); - settings_t *settings = config_get_ptr(); + size_t selection = menu_navigation_get_selection(); + settings_t *settings = config_get_ptr(); + bool menu_show_sublabels = settings->bools.menu_show_sublabels; rgui->menu_sublabel[0] = '\0'; - if (settings->bools.menu_show_sublabels && selection < menu_entries_get_size()) + if (menu_show_sublabels && selection < menu_entries_get_size()) { menu_entry_t entry; - const char *sublabel = NULL; + const char *sublabel = NULL; menu_entry_init(&entry); entry.path_enabled = false; @@ -4728,15 +4789,15 @@ static void rgui_update_menu_sublabel(rgui_t *rgui) if (!string_is_empty(sublabel)) { - static const char* const sublabel_spacer = RGUI_TICKER_SPACER; - struct string_list *list = NULL; size_t line_index; - bool prev_line_empty = true; - + static const char* const + sublabel_spacer = RGUI_TICKER_SPACER; + bool prev_line_empty = true; /* Sanitise sublabel * > Replace newline characters with standard delimiter * > Remove whitespace surrounding each sublabel line */ - list = string_split(sublabel, "\n"); + struct string_list *list = string_split(sublabel, "\n"); + if (list) { for (line_index = 0; line_index < list->size; line_index++) @@ -4745,8 +4806,10 @@ static void rgui_update_menu_sublabel(rgui_t *rgui) if (!string_is_empty(line)) { if (!prev_line_empty) - strlcat(rgui->menu_sublabel, sublabel_spacer, sizeof(rgui->menu_sublabel)); - strlcat(rgui->menu_sublabel, line, sizeof(rgui->menu_sublabel)); + strlcat(rgui->menu_sublabel, + sublabel_spacer, sizeof(rgui->menu_sublabel)); + strlcat(rgui->menu_sublabel, + line, sizeof(rgui->menu_sublabel)); prev_line_empty = false; } } @@ -4763,7 +4826,7 @@ static void rgui_navigation_set(void *data, bool scroll) bool do_set_start = false; size_t end = menu_entries_get_size(); size_t selection = menu_navigation_get_selection(); - rgui_t *rgui = (rgui_t*)data; + rgui_t *rgui = (rgui_t*)data; if (!rgui) return; @@ -4817,10 +4880,11 @@ static void rgui_populate_entries(void *data, const char *path, const char *label, unsigned k) { - rgui_t *rgui = (rgui_t*)data; - settings_t *settings = config_get_ptr(); + rgui_t *rgui = (rgui_t*)data; + settings_t *settings = config_get_ptr(); + unsigned aspect_ratio_lock = settings->uints.menu_rgui_aspect_ratio_lock; - if (!rgui || !settings) + if (!rgui) return; /* Check whether we are currently viewing a playlist */ @@ -4839,7 +4903,7 @@ static void rgui_populate_entries(void *data, /* If aspect ratio lock is enabled, must restore * content video settings when accessing the video * settings menu... */ - if (settings->uints.menu_rgui_aspect_ratio_lock != RGUI_ASPECT_RATIO_LOCK_NONE) + if (aspect_ratio_lock != RGUI_ASPECT_RATIO_LOCK_NONE) { if (string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_VIDEO_SETTINGS_LIST))) { @@ -4847,7 +4911,8 @@ static void rgui_populate_entries(void *data, * the video settings menu are preserved */ rgui_video_settings_t current_video_settings = {0}; rgui_get_video_config(¤t_video_settings); - if (rgui_is_video_config_equal(¤t_video_settings, &rgui->menu_video_settings)) + if (rgui_is_video_config_equal(¤t_video_settings, + &rgui->menu_video_settings)) { rgui_set_video_config(rgui, &rgui->content_video_settings, false); /* Menu viewport has been overridden - must ignore @@ -4956,34 +5021,39 @@ static int rgui_pointer_up(void *data, static void rgui_frame(void *data, video_frame_info_t *video_info) { - rgui_t *rgui = (rgui_t*)data; - settings_t *settings = config_get_ptr(); + rgui_t *rgui = (rgui_t*)data; + settings_t *settings = config_get_ptr(); + bool bg_filler_thickness_enable = settings->bools.menu_rgui_background_filler_thickness_enable; + bool border_filler_thickness_enable = settings->bools.menu_rgui_border_filler_thickness_enable; + unsigned aspect_ratio_lock = settings->uints.menu_rgui_aspect_ratio_lock; + bool border_filler_enable = settings->bools.menu_rgui_border_filler_enable; - if (settings->bools.menu_rgui_background_filler_thickness_enable != rgui->bg_thickness) + if (bg_filler_thickness_enable != rgui->bg_thickness) { - rgui->bg_thickness = settings->bools.menu_rgui_background_filler_thickness_enable; + rgui->bg_thickness = bg_filler_thickness_enable; rgui->bg_modified = true; rgui->force_redraw = true; } - if (settings->bools.menu_rgui_border_filler_thickness_enable != rgui->border_thickness) + if (border_filler_thickness_enable != rgui->border_thickness) { - rgui->border_thickness = settings->bools.menu_rgui_border_filler_thickness_enable; + rgui->border_thickness = border_filler_thickness_enable; rgui->bg_modified = true; rgui->force_redraw = true; } - if (settings->bools.menu_rgui_border_filler_enable != rgui->border_enable) + if (border_filler_enable != rgui->border_enable) { - rgui->border_enable = settings->bools.menu_rgui_border_filler_enable; - rgui->bg_modified = true; - rgui->force_redraw = true; + rgui->border_enable = border_filler_enable; + rgui->bg_modified = true; + rgui->force_redraw = true; } if (settings->bools.menu_rgui_shadows != rgui->shadow_enable) { rgui_set_blit_functions( - settings->bools.menu_rgui_shadows, settings->bools.menu_rgui_extended_ascii); + settings->bools.menu_rgui_shadows, + settings->bools.menu_rgui_extended_ascii); rgui->shadow_enable = settings->bools.menu_rgui_shadows; rgui->bg_modified = true; @@ -5006,7 +5076,8 @@ static void rgui_frame(void *data, video_frame_info_t *video_info) if (settings->bools.menu_rgui_extended_ascii != rgui->extended_ascii_enable) { rgui_set_blit_functions( - settings->bools.menu_rgui_shadows, settings->bools.menu_rgui_extended_ascii); + settings->bools.menu_rgui_shadows, + settings->bools.menu_rgui_extended_ascii); rgui->extended_ascii_enable = settings->bools.menu_rgui_extended_ascii; rgui->force_redraw = true; @@ -5046,14 +5117,12 @@ static void rgui_frame(void *data, video_frame_info_t *video_info) } /* > Check for changes in aspect ratio lock setting */ - if (settings->uints.menu_rgui_aspect_ratio_lock != rgui->menu_aspect_ratio_lock) + if (aspect_ratio_lock != rgui->menu_aspect_ratio_lock) { - rgui->menu_aspect_ratio_lock = settings->uints.menu_rgui_aspect_ratio_lock; + rgui->menu_aspect_ratio_lock = aspect_ratio_lock; - if (settings->uints.menu_rgui_aspect_ratio_lock == RGUI_ASPECT_RATIO_LOCK_NONE) - { + if (aspect_ratio_lock == RGUI_ASPECT_RATIO_LOCK_NONE) rgui_set_video_config(rgui, &rgui->content_video_settings, true); - } else { rgui_update_menu_viewport(rgui); @@ -5071,7 +5140,7 @@ static void rgui_frame(void *data, video_frame_info_t *video_info) if ((rgui->window_width != video_info->width) || (rgui->window_height != video_info->height)) { - if ((settings->uints.menu_rgui_aspect_ratio_lock != RGUI_ASPECT_RATIO_LOCK_NONE) && + if ((aspect_ratio_lock != RGUI_ASPECT_RATIO_LOCK_NONE) && !rgui->ignore_resize_events) { rgui_update_menu_viewport(rgui); @@ -5091,11 +5160,13 @@ static void rgui_frame(void *data, video_frame_info_t *video_info) * fullscreen thumbnail view is incredibly jarring...) */ if ((cpu_features_get_time_usec() - rgui->thumbnail_load_trigger_time) >= (settings->uints.menu_rgui_thumbnail_delay * 1000 * (rgui->show_fs_thumbnail ? 1.5f : 1.0f))) - rgui_load_current_thumbnails(rgui, settings->bools.network_on_demand_thumbnails); + rgui_load_current_thumbnails(rgui, + settings->bools.network_on_demand_thumbnails); } /* Read pointer input */ - if (settings->bools.menu_mouse_enable || settings->bools.menu_pointer_enable) + if ( settings->bools.menu_mouse_enable || + settings->bools.menu_pointer_enable) { menu_input_get_pointer_state(&rgui->pointer); @@ -5109,8 +5180,9 @@ static void rgui_frame(void *data, video_frame_info_t *video_info) static void rgui_toggle(void *userdata, bool menu_on) { - rgui_t *rgui = (rgui_t*)userdata; - settings_t *settings = config_get_ptr(); + rgui_t *rgui = (rgui_t*)userdata; + settings_t *settings = config_get_ptr(); + unsigned aspect_ratio_lock = settings ? settings->uints.menu_rgui_aspect_ratio_lock : 0; /* TODO/FIXME - when we close RetroArch, this function * gets called and settings is NULL at this point. @@ -5119,7 +5191,7 @@ static void rgui_toggle(void *userdata, bool menu_on) if (!rgui || !settings) return; - if (settings->uints.menu_rgui_aspect_ratio_lock != RGUI_ASPECT_RATIO_LOCK_NONE) + if (aspect_ratio_lock != RGUI_ASPECT_RATIO_LOCK_NONE) { if (menu_on) {