XMB: Icon thumbnail cleanups

This commit is contained in:
sonninnos committed 2026-02-08 21:57:09 +02:00
1 parent 75d7f087be
commit 24a1a4c0d6
2 files changed
+55 -39

No files matched your search

+48 -38
View File
@@ -625,7 +625,7 @@ bool gfx_thumbnail_update_path(
|| string_is_equal(path_data->system, "favorites"))
{
if (gfx_thumbnail_get_content_dir(
path_data, content_dir, sizeof(content_dir)) == 0)
path_data, content_dir, sizeof(content_dir)) == 0)
return false;
system_name = content_dir;
@@ -644,7 +644,7 @@ bool gfx_thumbnail_update_path(
/* imageviewer content is identical for left and right thumbnails */
if (path_is_media_type(path_data->content_path) == RARCH_CONTENT_IMAGE)
strlcpy(thumbnail_path,
path_data->content_path, PATH_MAX_LENGTH * sizeof(char));
path_data->content_path, PATH_MAX_LENGTH * sizeof(char));
}
else
{
@@ -663,60 +663,70 @@ bool gfx_thumbnail_update_path(
fill_pathname_join_special(tmp_buf, thumbnail_path, type, sizeof(tmp_buf));
thumbnail_path[0] = '\0';
/* >> Add content image - first try with full file name */
if (path_data->content_img_full[0] != '\0')
fill_pathname_join_special(thumbnail_path, tmp_buf,
path_data->content_img_full, PATH_MAX_LENGTH * sizeof(char));
thumbnail_found = path_is_valid(thumbnail_path);
/* Try alternative file extensions in turn, if wanted */
for (i = 1;
playlist_allow_non_png
&& !thumbnail_found
&& thumbnail_path[0]!='\0'
&& i < MAX_SUPPORTED_THUMBNAIL_EXTENSIONS; i++ )
/* >> Add content image - first try with label (database name) */
if (!string_is_empty(path_data->content_img))
{
strlcpy(path_get_extension_mutable(thumbnail_path),
SUPPORTED_THUMBNAIL_EXTENSIONS[i], 6);
thumbnail_found = path_is_valid(thumbnail_path);
}
/* >> Add content image - second try with label (database name) */
if (!thumbnail_found && path_data->content_img[0] != '\0')
{
thumbnail_path[0] = '\0';
fill_pathname_join_special(thumbnail_path, tmp_buf,
path_data->content_img, PATH_MAX_LENGTH * sizeof(char));
thumbnail_found = path_is_valid(thumbnail_path);
if (playlist_allow_non_png && !string_is_empty(thumbnail_path))
{
for (i = 1; i < MAX_SUPPORTED_THUMBNAIL_EXTENSIONS && !thumbnail_found; i++)
{
if (!path_get_extension_mutable(thumbnail_path))
continue;
strlcpy(path_get_extension_mutable(thumbnail_path),
SUPPORTED_THUMBNAIL_EXTENSIONS[i], 6);
thumbnail_found = path_is_valid(thumbnail_path);
}
}
}
for (i = 1;
playlist_allow_non_png
&& !thumbnail_found
&& i < MAX_SUPPORTED_THUMBNAIL_EXTENSIONS ; i++ )
/* >> Add content image - second try with full file name */
if (!thumbnail_found && !string_is_empty(path_data->content_img_full))
{
strlcpy(path_get_extension_mutable(thumbnail_path),
SUPPORTED_THUMBNAIL_EXTENSIONS[i], 6);
thumbnail_path[0] = '\0';
fill_pathname_join_special(thumbnail_path, tmp_buf,
path_data->content_img_full, PATH_MAX_LENGTH * sizeof(char));
thumbnail_found = path_is_valid(thumbnail_path);
if (playlist_allow_non_png && !string_is_empty(thumbnail_path))
{
for (i = 1; i < MAX_SUPPORTED_THUMBNAIL_EXTENSIONS && !thumbnail_found; i++)
{
if (!path_get_extension_mutable(thumbnail_path))
continue;
strlcpy(path_get_extension_mutable(thumbnail_path),
SUPPORTED_THUMBNAIL_EXTENSIONS[i], 6);
thumbnail_found = path_is_valid(thumbnail_path);
}
}
}
/* >> Add content image - third try with shortened name (title only) */
if (!thumbnail_found && path_data->content_img_short[0] != '\0')
if (!thumbnail_found && !string_is_empty(path_data->content_img_short))
{
thumbnail_path[0] = '\0';
fill_pathname_join_special(thumbnail_path, tmp_buf,
path_data->content_img_short, PATH_MAX_LENGTH * sizeof(char));
thumbnail_found = path_is_valid(thumbnail_path);
}
for( i = 1 ;
playlist_allow_non_png
&& !thumbnail_found
&& i < MAX_SUPPORTED_THUMBNAIL_EXTENSIONS ; i++ )
{
strlcpy(path_get_extension_mutable(thumbnail_path),
SUPPORTED_THUMBNAIL_EXTENSIONS[i], 6);
thumbnail_found = path_is_valid(thumbnail_path);
if (playlist_allow_non_png && !string_is_empty(thumbnail_path))
{
for (i = 1; i < MAX_SUPPORTED_THUMBNAIL_EXTENSIONS && !thumbnail_found; i++)
{
if (!path_get_extension_mutable(thumbnail_path))
continue;
strlcpy(path_get_extension_mutable(thumbnail_path),
SUPPORTED_THUMBNAIL_EXTENSIONS[i], 6);
thumbnail_found = path_is_valid(thumbnail_path);
}
}
}
/* This logic is valid for locally stored thumbnails. For optional downloads,
* gfx_thumbnail_get_img_name() is used */
+7 -1
View File
@@ -1848,6 +1848,7 @@ static void xmb_selection_pointer_changed(
real_iy = iy + xmb->margins_screen_top;
if ( xmb->is_playlist
&& xmb->allow_horizontal_animation
&& gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_ICON)
&& !string_is_equal(xmb->title_name, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_IMAGES_TAB))
&& !string_is_equal(xmb->title_name, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MUSIC_TAB))
@@ -2621,6 +2622,7 @@ static void xmb_populate_dynamic_icons(xmb_handle_t *xmb)
video_driver_get_size(NULL, &height);
xmb_calculate_visible_range(xmb, height, end, (unsigned)selection, &entry_start, &entry_end);
if ( xmb->is_playlist
&& xmb->allow_horizontal_animation
&& !string_is_equal(xmb->title_name, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_IMAGES_TAB))
&& !string_is_equal(xmb->title_name, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_MUSIC_TAB))
&& !string_is_equal(xmb->title_name, msg_hash_to_str(MENU_ENUM_LABEL_VALUE_VIDEO_TAB))
@@ -6784,6 +6786,9 @@ static void xmb_context_reset_internal(xmb_handle_t *xmb,
|| xmb->is_file_list
|| xmb->is_quick_menu)
xmb_update_thumbnail_image(xmb);
if (xmb->is_playlist)
xmb_populate_dynamic_icons(xmb);
}
/* Have to reset this, otherwise savestate
@@ -7152,7 +7157,8 @@ static void xmb_render(void *data,
continue;
}
if (thumbnail_icon->icon.status == GFX_THUMBNAIL_STATUS_UNKNOWN)
if ( thumbnail_icon->icon.status == GFX_THUMBNAIL_STATUS_UNKNOWN
&& !string_is_empty(thumbnail_icon->thumbnail_path_data.icon_path))
{
node->icon_hide = false;
if (!xmb_load_dynamic_icon(