mirror of
https://github.com/libretro/RetroArch
synced 2025-03-28 19:20:35 +00:00
Move thumbnail_path_data to menu_st - cut down on code duplication in
menu_drivers
This commit is contained in:
parent
c72bcd96e9
commit
ba492e9614
@ -1494,10 +1494,8 @@ int generic_action_ok_displaylist_push(const char *path,
|
||||
|
||||
fill_pathname_base(lpl_basename, path, sizeof(lpl_basename));
|
||||
path_remove_extension(lpl_basename);
|
||||
if ( menu_st->driver_ctx
|
||||
&& menu_st->driver_ctx->set_thumbnail_system)
|
||||
menu_st->driver_ctx->set_thumbnail_system(
|
||||
menu_st->userdata, lpl_basename, sizeof(lpl_basename));
|
||||
menu_driver_set_thumbnail_system(
|
||||
menu_st->userdata, lpl_basename, sizeof(lpl_basename));
|
||||
|
||||
info.directory_ptr = idx;
|
||||
info_path = tmp;
|
||||
@ -7963,10 +7961,8 @@ static int action_ok_pl_entry_content_thumbnails(const char *path,
|
||||
if (!playlist || !menu)
|
||||
return -1;
|
||||
|
||||
if ( menu_st->driver_ctx
|
||||
&& menu_st->driver_ctx->get_thumbnail_system)
|
||||
menu_st->driver_ctx->get_thumbnail_system(
|
||||
menu_st->userdata, system, sizeof(system));
|
||||
menu_driver_get_thumbnail_system(
|
||||
menu_st->userdata, system, sizeof(system));
|
||||
|
||||
task_push_pl_entry_thumbnail_download(system,
|
||||
playlist, menu->rpl_entry_selection_ptr,
|
||||
|
@ -594,9 +594,6 @@ typedef struct materialui_handle
|
||||
const char *src, size_t src_len,
|
||||
int line_width, int wideglyph_width, unsigned max_lines);
|
||||
|
||||
/* Thumbnail helpers */
|
||||
gfx_thumbnail_path_data_t *thumbnail_path_data;
|
||||
|
||||
struct
|
||||
{
|
||||
materialui_playlist_icons_t playlist; /* ptr alignment */
|
||||
@ -3224,6 +3221,7 @@ static INLINE void materialui_kill_scroll_animation(
|
||||
* is detected */
|
||||
static bool materialui_render_process_entry_default(
|
||||
materialui_handle_t* mui,
|
||||
struct menu_state *menu_st,
|
||||
materialui_node_t *node,
|
||||
size_t entry_idx, size_t selection, size_t playlist_idx,
|
||||
bool first_entry_found, bool last_entry_found,
|
||||
@ -3243,6 +3241,7 @@ static bool materialui_render_process_entry_default(
|
||||
* Always returns true */
|
||||
static bool materialui_render_process_entry_playlist_thumb_list(
|
||||
materialui_handle_t* mui,
|
||||
struct menu_state *menu_st,
|
||||
materialui_node_t *node,
|
||||
size_t entry_idx, size_t selection, size_t playlist_idx,
|
||||
bool first_entry_found, bool last_entry_found,
|
||||
@ -3256,7 +3255,7 @@ static bool materialui_render_process_entry_playlist_thumb_list(
|
||||
* and free thumbnails for all off-screen entries */
|
||||
if (mui->flags & MUI_FLAG_SECONDARY_THUMBNAIL_ENABLED)
|
||||
gfx_thumbnail_process_streams(
|
||||
mui->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
mui->playlist, playlist_idx,
|
||||
&node->thumbnails.primary,
|
||||
@ -3266,7 +3265,7 @@ static bool materialui_render_process_entry_playlist_thumb_list(
|
||||
network_on_demand_thumbnails);
|
||||
else
|
||||
gfx_thumbnail_process_stream(
|
||||
mui->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
GFX_THUMBNAIL_RIGHT,
|
||||
mui->playlist, playlist_idx,
|
||||
@ -3285,6 +3284,7 @@ static bool materialui_render_process_entry_playlist_thumb_list(
|
||||
* Always returns true */
|
||||
static bool materialui_render_process_entry_playlist_dual_icon(
|
||||
materialui_handle_t* mui,
|
||||
struct menu_state *menu_st,
|
||||
materialui_node_t *node,
|
||||
size_t entry_idx, size_t selection, size_t playlist_idx,
|
||||
bool first_entry_found, bool last_entry_found,
|
||||
@ -3299,7 +3299,7 @@ static bool materialui_render_process_entry_playlist_dual_icon(
|
||||
* > Note that secondary thumbnail is force
|
||||
* enabled in dual icon mode */
|
||||
gfx_thumbnail_process_streams(
|
||||
mui->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
mui->playlist, playlist_idx,
|
||||
&node->thumbnails.primary,
|
||||
@ -3318,6 +3318,7 @@ static bool materialui_render_process_entry_playlist_dual_icon(
|
||||
* Always returns true */
|
||||
static bool materialui_render_process_entry_playlist_desktop(
|
||||
materialui_handle_t* mui,
|
||||
struct menu_state *menu_st,
|
||||
materialui_node_t *node,
|
||||
size_t entry_idx, size_t selection, size_t playlist_idx,
|
||||
bool first_entry_found, bool last_entry_found,
|
||||
@ -3343,7 +3344,7 @@ static bool materialui_render_process_entry_playlist_desktop(
|
||||
* > Note that secondary thumbnail is force
|
||||
* enabled */
|
||||
gfx_thumbnail_process_streams(
|
||||
mui->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
mui->playlist, playlist_idx,
|
||||
&node->thumbnails.primary,
|
||||
@ -3518,6 +3519,7 @@ static bool materialui_render_process_entry_playlist_desktop(
|
||||
|
||||
static bool (*materialui_render_process_entry)(
|
||||
materialui_handle_t* mui,
|
||||
struct menu_state *menu_st,
|
||||
materialui_node_t *node,
|
||||
size_t entry_idx, size_t selection, size_t playlist_idx,
|
||||
bool first_entry_found, bool last_entry_found,
|
||||
@ -3537,6 +3539,7 @@ static void materialui_init_font(
|
||||
|
||||
static void materialui_layout(
|
||||
materialui_handle_t *mui,
|
||||
struct menu_state *menu_st,
|
||||
gfx_display_t *p_disp,
|
||||
settings_t *settings,
|
||||
bool video_is_threaded);
|
||||
@ -3627,7 +3630,7 @@ static void materialui_render(void *data,
|
||||
|
||||
/* Note: We don't need a full context reset here
|
||||
* > Just rescale layout, and reset frame time counter */
|
||||
materialui_layout(mui, p_disp,
|
||||
materialui_layout(mui, menu_st, p_disp,
|
||||
settings, video_driver_is_threaded());
|
||||
video_driver_monitor_reset();
|
||||
}
|
||||
@ -3824,7 +3827,7 @@ static void materialui_render(void *data,
|
||||
/* Perform any additional processing required
|
||||
* for the current entry */
|
||||
if (!materialui_render_process_entry(
|
||||
mui, node, i, selection,
|
||||
mui, menu_st, node, i, selection,
|
||||
list->list[i].entry_idx,
|
||||
first_entry_found, last_entry_found,
|
||||
thumbnail_upscale_threshold,
|
||||
@ -7288,6 +7291,7 @@ static void materialui_frame(void *data, video_frame_info_t *video_info)
|
||||
* user has enabled playlist thumbnails */
|
||||
static void materialui_set_list_view_type(
|
||||
materialui_handle_t *mui,
|
||||
struct menu_state *menu_st,
|
||||
unsigned thumbnail_view_portrait,
|
||||
unsigned thumbnail_view_landscape)
|
||||
{
|
||||
@ -7306,7 +7310,7 @@ static void materialui_set_list_view_type(
|
||||
mui->list_view_type = MUI_LIST_VIEW_PLAYLIST;
|
||||
|
||||
/* Check whether primary thumbnail is enabled */
|
||||
if (gfx_thumbnail_is_enabled(mui->thumbnail_path_data,
|
||||
if (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data,
|
||||
GFX_THUMBNAIL_RIGHT))
|
||||
{
|
||||
mui->flags |= MUI_FLAG_PRIMARY_THUMBNAIL_AVAILABLE;
|
||||
@ -7697,12 +7701,14 @@ static void materialui_set_thumbnail_dimensions(materialui_handle_t *mui)
|
||||
* - Returns false if secondary thumbnails cannot be
|
||||
* enabled (due to per-playlist override) */
|
||||
static bool materialui_force_enable_secondary_thumbnail(
|
||||
materialui_handle_t *mui, settings_t *settings)
|
||||
materialui_handle_t *mui,
|
||||
struct menu_state *menu_st,
|
||||
settings_t *settings)
|
||||
{
|
||||
/* If secondary thumbnail is already enabled,
|
||||
* do nothing */
|
||||
if (gfx_thumbnail_is_enabled(
|
||||
mui->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
return true;
|
||||
|
||||
/* Secondary thumbnail is disabled
|
||||
@ -7733,14 +7739,16 @@ static bool materialui_force_enable_secondary_thumbnail(
|
||||
/* Final check - this will return true unless a
|
||||
* per-playlist override is in place */
|
||||
return gfx_thumbnail_is_enabled(
|
||||
mui->thumbnail_path_data, GFX_THUMBNAIL_LEFT);
|
||||
menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT);
|
||||
}
|
||||
|
||||
/* Determines whether dual thumbnails should be enabled
|
||||
* based on current list view mode, thumbnail dimensions
|
||||
* and screen size */
|
||||
static void materialui_set_secondary_thumbnail_enable(
|
||||
materialui_handle_t *mui, settings_t *settings)
|
||||
materialui_handle_t *mui,
|
||||
struct menu_state *menu_st,
|
||||
settings_t *settings)
|
||||
{
|
||||
switch (mui->list_view_type)
|
||||
{
|
||||
@ -7764,7 +7772,7 @@ static void materialui_set_secondary_thumbnail_enable(
|
||||
|
||||
/* Attempt to force enable secondary thumbnails if
|
||||
* global 'Secondary Thumbnail' type is set to OFF */
|
||||
if (!materialui_force_enable_secondary_thumbnail(mui, settings))
|
||||
if (!materialui_force_enable_secondary_thumbnail(mui, menu_st, settings))
|
||||
return;
|
||||
|
||||
/* Secondary thumbnails are supported/enabled
|
||||
@ -7807,7 +7815,7 @@ static void materialui_set_secondary_thumbnail_enable(
|
||||
* want 'missing thumbnail' images if
|
||||
* thumbnails are actively disabled via
|
||||
* a per-playlist override */
|
||||
materialui_force_enable_secondary_thumbnail(mui, settings);
|
||||
materialui_force_enable_secondary_thumbnail(mui, menu_st, settings);
|
||||
mui->flags |= MUI_FLAG_SECONDARY_THUMBNAIL_ENABLED;
|
||||
break;
|
||||
case MUI_LIST_VIEW_PLAYLIST:
|
||||
@ -7825,15 +7833,17 @@ static void materialui_set_secondary_thumbnail_enable(
|
||||
* and calculates appropriate thumbnail dimensions/settings.
|
||||
* Must be called when updating menu layout and
|
||||
* populating menu lists. */
|
||||
static void materialui_update_list_view(materialui_handle_t *mui, settings_t *settings)
|
||||
static void materialui_update_list_view(materialui_handle_t *mui,
|
||||
struct menu_state *menu_st,
|
||||
settings_t *settings)
|
||||
{
|
||||
materialui_set_list_view_type(mui,
|
||||
materialui_set_list_view_type(mui, menu_st,
|
||||
settings->uints.menu_materialui_thumbnail_view_portrait,
|
||||
settings->uints.menu_materialui_thumbnail_view_landscape);
|
||||
materialui_set_landscape_optimisations_enable(mui);
|
||||
materialui_status_bar_init(mui, settings);
|
||||
materialui_set_thumbnail_dimensions(mui);
|
||||
materialui_set_secondary_thumbnail_enable(mui, settings);
|
||||
materialui_set_secondary_thumbnail_enable(mui, menu_st, settings);
|
||||
|
||||
/* Miscellaneous post-list-switch configuration:
|
||||
* > Set appropriate thumbnail stream delay */
|
||||
@ -7940,6 +7950,7 @@ static void materialui_init_font(
|
||||
/* Compute the positions of the widgets */
|
||||
static void materialui_layout(
|
||||
materialui_handle_t *mui,
|
||||
struct menu_state *menu_st,
|
||||
gfx_display_t *p_disp,
|
||||
settings_t *settings,
|
||||
bool video_is_threaded)
|
||||
@ -8032,7 +8043,7 @@ static void materialui_layout(
|
||||
mui->sys_bar_cache.timedate_str[0] = '\0';
|
||||
mui->sys_bar_cache.timedate_width = 0;
|
||||
|
||||
materialui_update_list_view(mui, settings);
|
||||
materialui_update_list_view(mui, menu_st, settings);
|
||||
|
||||
mui->flags |= MUI_FLAG_NEED_COMPUTE;
|
||||
}
|
||||
@ -8114,10 +8125,6 @@ static void *materialui_init(void **userdata, bool video_is_threaded)
|
||||
|
||||
*userdata = mui;
|
||||
|
||||
/* Initialise thumbnail path data */
|
||||
if (!(mui->thumbnail_path_data = gfx_thumbnail_path_init()))
|
||||
goto error;
|
||||
|
||||
/* Get DPI/screen-size-aware base unit size for
|
||||
* UI elements */
|
||||
video_driver_get_size(&width, &height);
|
||||
@ -8241,9 +8248,6 @@ static void materialui_free(void *data)
|
||||
|
||||
font_driver_bind_block(NULL, NULL);
|
||||
|
||||
if (mui->thumbnail_path_data)
|
||||
free(mui->thumbnail_path_data);
|
||||
|
||||
materialui_free_playlist_icon_list(mui);
|
||||
|
||||
p_anim->updatetime_cb = NULL;
|
||||
@ -8733,7 +8737,7 @@ static void materialui_populate_entries(
|
||||
materialui_populate_nav_bar(mui, menu_st, label, settings);
|
||||
|
||||
/* Update list view/thumbnail parameters */
|
||||
materialui_update_list_view(mui, settings);
|
||||
materialui_update_list_view(mui, menu_st, settings);
|
||||
|
||||
/* Reset touch feedback parameters
|
||||
* (i.e. there should be no leftover highlight
|
||||
@ -8800,11 +8804,12 @@ static void materialui_context_reset(void *data, bool is_threaded)
|
||||
settings_t *settings = config_get_ptr();
|
||||
const char *path_menu_wallpaper = settings ? settings->paths.path_menu_wallpaper : NULL;
|
||||
gfx_display_t *p_disp = disp_get_ptr();
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
|
||||
if (!mui)
|
||||
return;
|
||||
|
||||
materialui_layout(mui, p_disp, settings, is_threaded);
|
||||
materialui_layout(mui, menu_st, p_disp, settings, is_threaded);
|
||||
materialui_context_bg_destroy(mui);
|
||||
gfx_display_deinit_white_texture();
|
||||
gfx_display_init_white_texture();
|
||||
@ -9047,7 +9052,9 @@ static int materialui_switch_tabs(
|
||||
|
||||
/* If viewing a playlist with thumbnails enabled,
|
||||
* cycles current thumbnail view mode */
|
||||
static void materialui_switch_list_view(materialui_handle_t *mui, settings_t *settings)
|
||||
static void materialui_switch_list_view(materialui_handle_t *mui,
|
||||
struct menu_state *menu_st,
|
||||
settings_t *settings)
|
||||
{
|
||||
bool secondary_thumbnail_enabled_prev = mui->flags &
|
||||
MUI_FLAG_SECONDARY_THUMBNAIL_ENABLED;
|
||||
@ -9091,7 +9098,7 @@ static void materialui_switch_list_view(materialui_handle_t *mui, settings_t *se
|
||||
}
|
||||
|
||||
/* Update list view parameters */
|
||||
materialui_update_list_view(mui, settings);
|
||||
materialui_update_list_view(mui, menu_st, settings);
|
||||
|
||||
/* If the new list view does not have thumbnails
|
||||
* enabled, or last view had dual thumbnails and
|
||||
@ -9275,7 +9282,7 @@ static enum menu_action materialui_parse_menu_entry_action(
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
if (settings)
|
||||
materialui_switch_list_view(mui, settings);
|
||||
materialui_switch_list_view(mui, menu_st, settings);
|
||||
new_action = MENU_ACTION_NOOP;
|
||||
}
|
||||
else if (!materialui_entry_onscreen(mui, selection))
|
||||
@ -10079,7 +10086,7 @@ static int materialui_pointer_up(void *userdata,
|
||||
{
|
||||
settings_t *settings = config_get_ptr();
|
||||
if (settings)
|
||||
materialui_switch_list_view(mui, settings);
|
||||
materialui_switch_list_view(mui, menu_st, settings);
|
||||
return 0;
|
||||
}
|
||||
/* Fall back to normal cancel action */
|
||||
@ -11044,25 +11051,6 @@ static void materialui_list_clear(file_list_t *list)
|
||||
}
|
||||
}
|
||||
|
||||
static void materialui_set_thumbnail_system(void *userdata, char *s, size_t len)
|
||||
{
|
||||
materialui_handle_t *mui = (materialui_handle_t*)userdata;
|
||||
if (mui)
|
||||
gfx_thumbnail_set_system(
|
||||
mui->thumbnail_path_data, s, playlist_get_cached());
|
||||
}
|
||||
|
||||
static size_t materialui_get_thumbnail_system(void *userdata, char *s, size_t len)
|
||||
{
|
||||
materialui_handle_t *mui = (materialui_handle_t*)userdata;
|
||||
const char *system = NULL;
|
||||
if (!mui)
|
||||
return 0;
|
||||
if (!gfx_thumbnail_get_system(mui->thumbnail_path_data, &system))
|
||||
return 0;
|
||||
return strlcpy(s, system, len);
|
||||
}
|
||||
|
||||
static void materialui_refresh_thumbnail_image(void *userdata, unsigned i)
|
||||
{
|
||||
materialui_handle_t *mui = (materialui_handle_t*)userdata;
|
||||
@ -11150,8 +11138,6 @@ menu_ctx_driver_t menu_ctx_mui = {
|
||||
NULL,
|
||||
NULL,
|
||||
materialui_refresh_thumbnail_image,
|
||||
materialui_set_thumbnail_system,
|
||||
materialui_get_thumbnail_system,
|
||||
NULL,
|
||||
gfx_display_osk_ptr_at_pos,
|
||||
NULL, /* update_savestate_thumbnail_path */
|
||||
|
@ -451,7 +451,6 @@ struct ozone_handle
|
||||
menu_input_pointer_t pointer; /* retro_time_t alignment */
|
||||
|
||||
ozone_theme_t *theme;
|
||||
gfx_thumbnail_path_data_t *thumbnail_path_data;
|
||||
char *pending_message;
|
||||
file_list_t selection_buf_old; /* ptr alignment */
|
||||
file_list_t horizontal_list; /* console tabs */ /* ptr alignment */
|
||||
@ -4038,7 +4037,7 @@ static void ozone_update_content_metadata(ozone_handle_t *ozone)
|
||||
/* Must check whether core corresponds to 'viewer'
|
||||
* content even when not using a playlist, otherwise
|
||||
* file browser image updates are mishandled */
|
||||
if (gfx_thumbnail_get_core_name(ozone->thumbnail_path_data, &core_name))
|
||||
if (gfx_thumbnail_get_core_name(menu_st->thumbnail_path_data, &core_name))
|
||||
{
|
||||
if ( string_is_equal(core_name, "imageviewer")
|
||||
|| string_is_equal(core_name, "musicplayer")
|
||||
@ -6037,6 +6036,7 @@ border_iterate:
|
||||
|
||||
static void ozone_draw_thumbnail_bar(
|
||||
ozone_handle_t *ozone,
|
||||
struct menu_state *menu_st,
|
||||
gfx_display_t *p_disp,
|
||||
gfx_animation_t *p_anim,
|
||||
settings_t *settings,
|
||||
@ -6120,10 +6120,10 @@ static void ozone_draw_thumbnail_bar(
|
||||
/* Thumbnails */
|
||||
show_right_thumbnail =
|
||||
(ozone->thumbnails.right.status != GFX_THUMBNAIL_STATUS_MISSING)
|
||||
&& gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT);
|
||||
&& gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT);
|
||||
show_left_thumbnail =
|
||||
(ozone->thumbnails.left.status != GFX_THUMBNAIL_STATUS_MISSING)
|
||||
&& gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT)
|
||||
&& gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT)
|
||||
&& (!(ozone->flags2 & OZONE_FLAG2_SELECTION_CORE_IS_VIEWER));
|
||||
|
||||
/* Special "viewer" mode for savestate thumbnails */
|
||||
@ -7045,25 +7045,25 @@ static void ozone_show_fullscreen_thumbnails(ozone_handle_t *ozone)
|
||||
{
|
||||
/* imageviewer content requires special treatment,
|
||||
* since only the right thumbnail is ever loaded */
|
||||
if (!gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
|
||||
if (!gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
bool left_thumbnail_enabled = gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT);
|
||||
bool left_thumbnail_enabled = gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT);
|
||||
|
||||
if (!left_thumbnail_enabled && !gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
|
||||
if (!left_thumbnail_enabled && !gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
|
||||
return;
|
||||
|
||||
if ((ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE) &&
|
||||
(left_thumbnail_enabled &&
|
||||
((ozone->thumbnails.left.status != GFX_THUMBNAIL_STATUS_MISSING) &&
|
||||
(ozone->thumbnails.left.status != GFX_THUMBNAIL_STATUS_AVAILABLE))))
|
||||
if ( (ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
&& (left_thumbnail_enabled
|
||||
&& ((ozone->thumbnails.left.status != GFX_THUMBNAIL_STATUS_MISSING)
|
||||
&& (ozone->thumbnails.left.status != GFX_THUMBNAIL_STATUS_AVAILABLE))))
|
||||
return;
|
||||
|
||||
if ((ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_MISSING) &&
|
||||
(!(ozone->flags & OZONE_FLAG_IS_STATE_SLOT)) &&
|
||||
(!left_thumbnail_enabled || (ozone->thumbnails.left.status != GFX_THUMBNAIL_STATUS_AVAILABLE)))
|
||||
if ( (ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_MISSING)
|
||||
&& (!(ozone->flags & OZONE_FLAG_IS_STATE_SLOT))
|
||||
&& (!left_thumbnail_enabled || (ozone->thumbnails.left.status != GFX_THUMBNAIL_STATUS_AVAILABLE)))
|
||||
return;
|
||||
}
|
||||
|
||||
@ -7474,20 +7474,20 @@ static void ozone_set_thumbnail_content(void *data, const char *s)
|
||||
size_t selection = menu_st->selection_ptr;
|
||||
size_t list_size = MENU_LIST_GET_SELECTION(menu_list, 0)->size;
|
||||
file_list_t *list = MENU_LIST_GET_SELECTION(menu_list, 0);
|
||||
playlist_t *pl = NULL;
|
||||
|
||||
/* Get playlist index corresponding
|
||||
* to the selected entry */
|
||||
if (list
|
||||
if ( list
|
||||
&& (selection < list_size)
|
||||
&& (list->list[selection].type == FILE_TYPE_RPL_ENTRY))
|
||||
{
|
||||
size_t playlist_index = list->list[selection].entry_idx;
|
||||
gfx_thumbnail_set_content_playlist(ozone->thumbnail_path_data,
|
||||
playlist_get_cached(), playlist_index);
|
||||
selection = list->list[selection].entry_idx;
|
||||
pl = playlist_get_cached();
|
||||
}
|
||||
else
|
||||
gfx_thumbnail_set_content_playlist(ozone->thumbnail_path_data,
|
||||
NULL, selection);
|
||||
|
||||
gfx_thumbnail_set_content_playlist(menu_st->thumbnail_path_data,
|
||||
pl, selection);
|
||||
|
||||
switch (ozone->tabs[ozone->categories_selection_ptr])
|
||||
{
|
||||
@ -7516,7 +7516,7 @@ static void ozone_set_thumbnail_content(void *data, const char *s)
|
||||
menu_entry_get(&entry, 0, menu_st->selection_ptr, NULL, true);
|
||||
|
||||
if (!string_is_empty(entry.path))
|
||||
gfx_thumbnail_set_content(ozone->thumbnail_path_data, entry.path);
|
||||
gfx_thumbnail_set_content(menu_st->thumbnail_path_data, entry.path);
|
||||
}
|
||||
}
|
||||
#if defined(HAVE_LIBRETRODB)
|
||||
@ -7532,7 +7532,7 @@ static void ozone_set_thumbnail_content(void *data, const char *s)
|
||||
entry.flags |= MENU_ENTRY_FLAG_PATH_ENABLED;
|
||||
menu_entry_get(&entry, 0, menu_st->selection_ptr, NULL, true);
|
||||
|
||||
if (menu_explore_set_playlist_thumbnail(entry.type, ozone->thumbnail_path_data) >= 0)
|
||||
if (menu_explore_set_playlist_thumbnail(entry.type, menu_st->thumbnail_path_data) >= 0)
|
||||
ozone->flags |= OZONE_FLAG_FULLSCREEN_THUMBNAILS_AVAILABLE;
|
||||
else
|
||||
ozone->flags &= ~OZONE_FLAG_FULLSCREEN_THUMBNAILS_AVAILABLE;
|
||||
@ -7560,7 +7560,7 @@ static void ozone_set_thumbnail_content(void *data, const char *s)
|
||||
menu_entry_get(&entry, 0, selection, NULL, true);
|
||||
|
||||
if (!string_is_empty(entry.path) && !string_is_empty(node->fullpath))
|
||||
gfx_thumbnail_set_content_image(ozone->thumbnail_path_data, node->fullpath, entry.path);
|
||||
gfx_thumbnail_set_content_image(menu_st->thumbnail_path_data, node->fullpath, entry.path);
|
||||
}
|
||||
}
|
||||
else if (!string_is_empty(s))
|
||||
@ -7571,7 +7571,7 @@ static void ozone_set_thumbnail_content(void *data, const char *s)
|
||||
* the sublevels of database manager lists.
|
||||
* Showing thumbnails on database entries is a
|
||||
* pointless nuisance and a waste of CPU cycles, IMHO... */
|
||||
gfx_thumbnail_set_content(ozone->thumbnail_path_data, s);
|
||||
gfx_thumbnail_set_content(menu_st->thumbnail_path_data, s);
|
||||
}
|
||||
|
||||
ozone_update_content_metadata(ozone);
|
||||
@ -7653,20 +7653,21 @@ static bool INLINE ozone_metadata_override_available(ozone_handle_t *ozone, sett
|
||||
(ozone->thumbnails_right_status_prev <= GFX_THUMBNAIL_STATUS_AVAILABLE)));
|
||||
}
|
||||
|
||||
static bool INLINE ozone_fullscreen_thumbnails_available(ozone_handle_t *ozone)
|
||||
static bool INLINE ozone_fullscreen_thumbnails_available(ozone_handle_t *ozone,
|
||||
struct menu_state *menu_st)
|
||||
{
|
||||
bool ret =
|
||||
( (ozone->flags & OZONE_FLAG_FULLSCREEN_THUMBNAILS_AVAILABLE))
|
||||
&& (!(ozone->flags & OZONE_FLAG_CURSOR_IN_SIDEBAR))
|
||||
&& (ozone->show_thumbnail_bar)
|
||||
&& (gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
&& ( (ozone->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE ||
|
||||
(ozone->thumbnails.left.status < GFX_THUMBNAIL_STATUS_AVAILABLE &&
|
||||
ozone->thumbnails_left_status_prev <= GFX_THUMBNAIL_STATUS_AVAILABLE))
|
||||
|| (ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE ||
|
||||
(ozone->thumbnails.right.status < GFX_THUMBNAIL_STATUS_AVAILABLE &&
|
||||
ozone->thumbnails_right_status_prev <= GFX_THUMBNAIL_STATUS_AVAILABLE)));
|
||||
&& (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
&& ( (ozone->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE
|
||||
|| (ozone->thumbnails.left.status < GFX_THUMBNAIL_STATUS_AVAILABLE
|
||||
&& ozone->thumbnails_left_status_prev <= GFX_THUMBNAIL_STATUS_AVAILABLE))
|
||||
|| (ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE
|
||||
|| (ozone->thumbnails.right.status < GFX_THUMBNAIL_STATUS_AVAILABLE
|
||||
&& ozone->thumbnails_right_status_prev <= GFX_THUMBNAIL_STATUS_AVAILABLE)));
|
||||
|
||||
if (!string_is_empty(ozone->savestate_thumbnail_file_path) &&
|
||||
ozone->thumbnails.savestate.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
@ -8023,7 +8024,7 @@ static enum menu_action ozone_parse_menu_entry_action(
|
||||
/* If this is a menu with thumbnails and cursor
|
||||
* is not in the sidebar, attempt to show
|
||||
* fullscreen thumbnail view */
|
||||
if ( ozone_fullscreen_thumbnails_available(ozone)
|
||||
if ( ozone_fullscreen_thumbnails_available(ozone, menu_st)
|
||||
&& (!(ozone->flags2 & OZONE_FLAG2_SHOW_FULLSCREEN_THUMBNAILS))
|
||||
&& (!(ozone->flags & OZONE_FLAG_CURSOR_IN_SIDEBAR)))
|
||||
{
|
||||
@ -8632,9 +8633,6 @@ static void *ozone_init(void **userdata, bool video_is_threaded)
|
||||
|
||||
ozone->flags2 &= ~OZONE_FLAG2_CURSOR_WIGGLING;
|
||||
|
||||
if (!(ozone->thumbnail_path_data = gfx_thumbnail_path_init()))
|
||||
goto error;
|
||||
|
||||
if (!(ozone->screensaver = menu_screensaver_init()))
|
||||
goto error;
|
||||
|
||||
@ -8833,9 +8831,6 @@ static void ozone_free(void *data)
|
||||
if (!string_is_empty(ozone->pending_message))
|
||||
free(ozone->pending_message);
|
||||
|
||||
if (ozone->thumbnail_path_data)
|
||||
free(ozone->thumbnail_path_data);
|
||||
|
||||
menu_screensaver_free(ozone->screensaver);
|
||||
}
|
||||
|
||||
@ -8848,6 +8843,7 @@ static void ozone_update_thumbnail_image(void *data)
|
||||
{
|
||||
bool show_thumbnail_bar, want_thumbnail_bar;
|
||||
ozone_handle_t *ozone = (ozone_handle_t*)data;
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
|
||||
if (!ozone)
|
||||
return;
|
||||
@ -8865,13 +8861,13 @@ static void ozone_update_thumbnail_image(void *data)
|
||||
}
|
||||
|
||||
/* Right thumbnail */
|
||||
if (gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
|
||||
if (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
|
||||
ozone->thumbnails.pending = OZONE_PENDING_THUMBNAIL_RIGHT;
|
||||
|
||||
/* Left thumbnail
|
||||
* > Disabled for image (and video/music) content */
|
||||
if ( (!(ozone->flags2 & OZONE_FLAG2_SELECTION_CORE_IS_VIEWER))
|
||||
&& (gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT)))
|
||||
&& (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT)))
|
||||
ozone->thumbnails.pending = (ozone->thumbnails.pending == OZONE_PENDING_THUMBNAIL_RIGHT)
|
||||
? OZONE_PENDING_THUMBNAIL_BOTH
|
||||
: OZONE_PENDING_THUMBNAIL_LEFT;
|
||||
@ -8884,7 +8880,8 @@ static void ozone_update_thumbnail_image(void *data)
|
||||
|
||||
static void ozone_refresh_thumbnail_image(void *data, unsigned i)
|
||||
{
|
||||
ozone_handle_t *ozone = (ozone_handle_t*)data;
|
||||
ozone_handle_t *ozone = (ozone_handle_t*)data;
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
|
||||
if (!ozone)
|
||||
return;
|
||||
@ -8897,12 +8894,12 @@ static void ozone_refresh_thumbnail_image(void *data, unsigned i)
|
||||
ozone_update_content_metadata(ozone);
|
||||
|
||||
/* Only refresh thumbnails if thumbnails are enabled */
|
||||
if ( ( gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
if ( ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
&& (ozone->flags & OZONE_FLAG_WANT_THUMBNAIL_BAR)
|
||||
&& ( (ozone->is_quick_menu) ||
|
||||
(ozone->flags & OZONE_FLAG_IS_PLAYLIST) ||
|
||||
(ozone->flags & OZONE_FLAG_IS_EXPLORE_LIST)))
|
||||
&& ( (ozone->is_quick_menu)
|
||||
|| (ozone->flags & OZONE_FLAG_IS_PLAYLIST)
|
||||
|| (ozone->flags & OZONE_FLAG_IS_EXPLORE_LIST)))
|
||||
ozone_update_thumbnail_image(ozone);
|
||||
}
|
||||
|
||||
@ -9196,7 +9193,8 @@ static void ozone_context_reset(void *data, bool is_threaded)
|
||||
"cursor_border.png"
|
||||
};
|
||||
unsigned i;
|
||||
ozone_handle_t *ozone = (ozone_handle_t*) data;
|
||||
ozone_handle_t *ozone = (ozone_handle_t*) data;
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
|
||||
if (ozone)
|
||||
{
|
||||
@ -10179,13 +10177,13 @@ static void ozone_render(void *data,
|
||||
|
||||
/* Explore list needs cached selection index */
|
||||
if (ozone->flags & OZONE_FLAG_IS_EXPLORE_LIST)
|
||||
selection = gfx_thumbnail_get_playlist_index(ozone->thumbnail_path_data);
|
||||
selection = gfx_thumbnail_get_playlist_index(menu_st->thumbnail_path_data);
|
||||
|
||||
switch (ozone->thumbnails.pending)
|
||||
{
|
||||
case OZONE_PENDING_THUMBNAIL_BOTH:
|
||||
gfx_thumbnail_request_streams(
|
||||
ozone->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
playlist,
|
||||
selection,
|
||||
@ -10199,7 +10197,7 @@ static void ozone_render(void *data,
|
||||
break;
|
||||
case OZONE_PENDING_THUMBNAIL_RIGHT:
|
||||
gfx_thumbnail_request_stream(
|
||||
ozone->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
GFX_THUMBNAIL_RIGHT,
|
||||
playlist,
|
||||
@ -10212,7 +10210,7 @@ static void ozone_render(void *data,
|
||||
break;
|
||||
case OZONE_PENDING_THUMBNAIL_LEFT:
|
||||
gfx_thumbnail_request_stream(
|
||||
ozone->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
GFX_THUMBNAIL_LEFT,
|
||||
playlist,
|
||||
@ -10515,6 +10513,7 @@ static void ozone_draw_header(
|
||||
|
||||
static void ozone_draw_footer(
|
||||
ozone_handle_t *ozone,
|
||||
struct menu_state *menu_st,
|
||||
gfx_display_t *p_disp,
|
||||
gfx_animation_t *p_anim,
|
||||
void *userdata,
|
||||
@ -10545,13 +10544,13 @@ static void ozone_draw_footer(
|
||||
* should be guaranteed anyway, but enforce it
|
||||
* here to prevent 'gaps' in the button list in
|
||||
* the event of unknown errors */
|
||||
bool fullscreen_thumbnails_available =
|
||||
ozone_fullscreen_thumbnails_available(ozone);
|
||||
bool fs_thumbnails_available =
|
||||
ozone_fullscreen_thumbnails_available(ozone, menu_st);
|
||||
bool metadata_override_available =
|
||||
fullscreen_thumbnails_available
|
||||
fs_thumbnails_available
|
||||
&& ozone_metadata_override_available(ozone, settings);
|
||||
bool thumbnail_cycle_enabled =
|
||||
fullscreen_thumbnails_available
|
||||
fs_thumbnails_available
|
||||
&& !(ozone->flags & OZONE_FLAG_IS_FILE_LIST)
|
||||
&& !((ozone->is_quick_menu && menu_is_running_quick_menu())
|
||||
|| (ozone->flags & OZONE_FLAG_IS_STATE_SLOT));
|
||||
@ -10563,7 +10562,7 @@ static void ozone_draw_footer(
|
||||
&& !clear_setting_enabled
|
||||
&& ozone_scan_available(ozone, selection);
|
||||
bool reset_to_default_available =
|
||||
!fullscreen_thumbnails_available
|
||||
!fs_thumbnails_available
|
||||
&& ozone_is_current_entry_settings(selection);
|
||||
bool help_available =
|
||||
!metadata_override_available
|
||||
@ -10607,7 +10606,7 @@ static void ozone_draw_footer(
|
||||
float help_x = (help_available)
|
||||
? reset_to_default_x - ozone->footer_labels.help.width - icon_size - (2.0f * icon_padding)
|
||||
: reset_to_default_x;
|
||||
float fullscreen_thumbs_x = (fullscreen_thumbnails_available)
|
||||
float fullscreen_thumbs_x = (fs_thumbnails_available)
|
||||
? help_x - ozone->footer_labels.fullscreen_thumbs.width - icon_size - (2.0f * icon_padding)
|
||||
: help_x;
|
||||
float manage_x = (manage_available)
|
||||
@ -10723,7 +10722,7 @@ static void ozone_draw_footer(
|
||||
mymat);
|
||||
|
||||
/* > Fullscreen thumbnais */
|
||||
if (fullscreen_thumbnails_available)
|
||||
if (fs_thumbnails_available)
|
||||
ozone_draw_icon(
|
||||
p_disp,
|
||||
userdata,
|
||||
@ -10928,7 +10927,7 @@ static void ozone_draw_footer(
|
||||
false);
|
||||
|
||||
/* > Fullscreen thumbnails */
|
||||
if (fullscreen_thumbnails_available)
|
||||
if (fs_thumbnails_available)
|
||||
gfx_display_draw_text(
|
||||
ozone->fonts.footer.font,
|
||||
ozone->footer_labels.fullscreen_thumbs.str,
|
||||
@ -11061,9 +11060,9 @@ static void ozone_draw_footer(
|
||||
* title string */
|
||||
usable_width = metadata_override_available
|
||||
? metadata_toggle_x
|
||||
: fullscreen_thumbnails_available
|
||||
? fullscreen_thumbs_x
|
||||
: search_x;
|
||||
: fs_thumbnails_available
|
||||
? fullscreen_thumbs_x
|
||||
: search_x;
|
||||
usable_width -= footer_margin + (icon_padding * 2);
|
||||
|
||||
if (usable_width > 0)
|
||||
@ -11151,27 +11150,6 @@ static void ozone_draw_footer(
|
||||
#endif
|
||||
}
|
||||
|
||||
static void ozone_set_thumbnail_system(void *data, char *s, size_t len)
|
||||
{
|
||||
ozone_handle_t *ozone = (ozone_handle_t*)data;
|
||||
if (!ozone)
|
||||
return;
|
||||
|
||||
gfx_thumbnail_set_system(
|
||||
ozone->thumbnail_path_data, s, playlist_get_cached());
|
||||
}
|
||||
|
||||
static size_t ozone_get_thumbnail_system(void *data, char *s, size_t len)
|
||||
{
|
||||
ozone_handle_t *ozone = (ozone_handle_t*)data;
|
||||
const char *system = NULL;
|
||||
if (!ozone)
|
||||
return 0;
|
||||
if (!gfx_thumbnail_get_system(ozone->thumbnail_path_data, &system))
|
||||
return 0;
|
||||
return strlcpy(s, system, len);
|
||||
}
|
||||
|
||||
static void ozone_selection_changed(ozone_handle_t *ozone, bool allow_animation)
|
||||
{
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
@ -11207,8 +11185,8 @@ static void ozone_selection_changed(ozone_handle_t *ozone, bool allow_animation)
|
||||
ozone_update_scroll(ozone, allow_animation, node);
|
||||
|
||||
/* Update thumbnail */
|
||||
if (gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
if ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
{
|
||||
bool update_thumbnails = false;
|
||||
|
||||
@ -11246,7 +11224,7 @@ static void ozone_selection_changed(ozone_handle_t *ozone, bool allow_animation)
|
||||
* content + right/left thumbnails
|
||||
* (otherwise last loaded thumbnail will
|
||||
* persist, and be shown on the wrong entry) */
|
||||
gfx_thumbnail_set_content(ozone->thumbnail_path_data, NULL);
|
||||
gfx_thumbnail_set_content(menu_st->thumbnail_path_data, NULL);
|
||||
ozone_unload_thumbnail_textures(ozone);
|
||||
update_thumbnails = true;
|
||||
ozone->flags &= ~OZONE_FLAG_WANT_THUMBNAIL_BAR;
|
||||
@ -11486,6 +11464,7 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
|
||||
&mymat);
|
||||
|
||||
ozone_draw_footer(ozone,
|
||||
menu_st,
|
||||
p_disp,
|
||||
p_anim,
|
||||
userdata,
|
||||
@ -11560,6 +11539,7 @@ static void ozone_frame(void *data, video_frame_info_t *video_info)
|
||||
/* Thumbnail bar */
|
||||
if (ozone->show_thumbnail_bar)
|
||||
ozone_draw_thumbnail_bar(ozone,
|
||||
menu_st,
|
||||
p_disp,
|
||||
p_anim,
|
||||
settings,
|
||||
@ -11826,7 +11806,7 @@ static void ozone_populate_entries(
|
||||
bool ozone_collapse_sidebar = false;
|
||||
bool was_db_manager_list = false;
|
||||
bool want_thumbnail_bar = false;
|
||||
bool fullscreen_thumbnails_available = false;
|
||||
bool fs_thumbnails_available = false;
|
||||
bool animate = false;
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
menu_list_t *menu_list = menu_st->entries.list;
|
||||
@ -11861,8 +11841,8 @@ static void ozone_populate_entries(
|
||||
/* Refresh thumbnails */
|
||||
ozone_unload_thumbnail_textures(ozone);
|
||||
|
||||
if (gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
if ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
{
|
||||
ozone_set_thumbnail_content(ozone, "");
|
||||
ozone_update_thumbnail_image(ozone);
|
||||
@ -11982,12 +11962,12 @@ static void ozone_populate_entries(
|
||||
if ( (!(ozone->is_quick_menu))
|
||||
&& (ozone->flags & OZONE_FLAG_WAS_QUICK_MENU)
|
||||
&& (!(ozone->flags & OZONE_FLAG_IS_STATE_SLOT))
|
||||
&& ( gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
&& ( ozone->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE ||
|
||||
ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE ||
|
||||
ozone->thumbnails.left.status == GFX_THUMBNAIL_STATUS_MISSING ||
|
||||
ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_MISSING))
|
||||
&& ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
&& ( ozone->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE
|
||||
|| ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE
|
||||
|| ozone->thumbnails.left.status == GFX_THUMBNAIL_STATUS_MISSING
|
||||
|| ozone->thumbnails.right.status == GFX_THUMBNAIL_STATUS_MISSING))
|
||||
ozone->flags |= OZONE_FLAG_SKIP_THUMBNAIL_RESET;
|
||||
|
||||
/* Always allow thumbnail reset in Information page */
|
||||
@ -12003,8 +11983,8 @@ static void ozone_populate_entries(
|
||||
ozone_update_savestate_thumbnail_path(ozone, (unsigned)menu_st->selection_ptr);
|
||||
ozone_update_savestate_thumbnail_image(ozone);
|
||||
}
|
||||
else if ( gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
else if ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
{
|
||||
ozone->flags |= (OZONE_FLAG_WANT_THUMBNAIL_BAR
|
||||
| OZONE_FLAG_SKIP_THUMBNAIL_RESET);
|
||||
@ -12028,8 +12008,8 @@ static void ozone_populate_entries(
|
||||
if (!(ozone->flags & OZONE_FLAG_SKIP_THUMBNAIL_RESET))
|
||||
ozone_unload_thumbnail_textures(ozone);
|
||||
|
||||
if (gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
if ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
{
|
||||
/* Only auto-load thumbnails if we are viewing
|
||||
* a playlist or a database manager list
|
||||
@ -12048,8 +12028,8 @@ static void ozone_populate_entries(
|
||||
}
|
||||
|
||||
if ( (ozone->flags & OZONE_FLAG_SKIP_THUMBNAIL_RESET)
|
||||
&& ( gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(ozone->thumbnail_path_data, GFX_THUMBNAIL_LEFT)))
|
||||
&& ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT)))
|
||||
ozone->flags |= OZONE_FLAG_WANT_THUMBNAIL_BAR;
|
||||
|
||||
switch (ozone->tabs[ozone->categories_selection_ptr])
|
||||
@ -12080,19 +12060,20 @@ static void ozone_populate_entries(
|
||||
else
|
||||
ozone->flags &= ~OZONE_FLAG_FULLSCREEN_THUMBNAILS_AVAILABLE;
|
||||
|
||||
fullscreen_thumbnails_available = ozone->flags & OZONE_FLAG_FULLSCREEN_THUMBNAILS_AVAILABLE;
|
||||
want_thumbnail_bar = ozone->flags & OZONE_FLAG_WANT_THUMBNAIL_BAR;
|
||||
fs_thumbnails_available = ozone->flags & OZONE_FLAG_FULLSCREEN_THUMBNAILS_AVAILABLE;
|
||||
want_thumbnail_bar = ozone->flags & OZONE_FLAG_WANT_THUMBNAIL_BAR;
|
||||
|
||||
if (fullscreen_thumbnails_available != want_thumbnail_bar)
|
||||
if (fs_thumbnails_available != want_thumbnail_bar)
|
||||
{
|
||||
if (fullscreen_thumbnails_available)
|
||||
if (fs_thumbnails_available)
|
||||
ozone->flags |= OZONE_FLAG_WANT_THUMBNAIL_BAR;
|
||||
else
|
||||
ozone->flags &= ~OZONE_FLAG_WANT_THUMBNAIL_BAR;
|
||||
}
|
||||
|
||||
/* State slots must not allow fullscreen thumbnails when slot has no image */
|
||||
if ((ozone->flags & OZONE_FLAG_IS_STATE_SLOT) && string_is_empty(ozone->savestate_thumbnail_file_path))
|
||||
if ( (ozone->flags & OZONE_FLAG_IS_STATE_SLOT)
|
||||
&& string_is_empty(ozone->savestate_thumbnail_file_path))
|
||||
ozone->flags &= ~OZONE_FLAG_FULLSCREEN_THUMBNAILS_AVAILABLE;
|
||||
}
|
||||
|
||||
@ -12516,8 +12497,6 @@ menu_ctx_driver_t menu_ctx_ozone = {
|
||||
NULL,
|
||||
ozone_update_thumbnail_image,
|
||||
ozone_refresh_thumbnail_image,
|
||||
ozone_set_thumbnail_system,
|
||||
ozone_get_thumbnail_system,
|
||||
ozone_set_thumbnail_content,
|
||||
gfx_display_osk_ptr_at_pos,
|
||||
ozone_update_savestate_thumbnail_path,
|
||||
|
@ -280,8 +280,6 @@ typedef struct
|
||||
{
|
||||
retro_time_t thumbnail_load_trigger_time; /* uint64_t */
|
||||
|
||||
gfx_thumbnail_path_data_t *thumbnail_path_data;
|
||||
|
||||
struct
|
||||
{
|
||||
bitmapfont_lut_t *regular;
|
||||
@ -5192,7 +5190,7 @@ static void rgui_render(
|
||||
rgui_render_fs_thumbnail(rgui, fb_width, fb_height, fb_pitch);
|
||||
|
||||
/* Get thumbnail title */
|
||||
if ( gfx_thumbnail_get_label(rgui->thumbnail_path_data, &thumbnail_title)
|
||||
if ( gfx_thumbnail_get_label(menu_st->thumbnail_path_data, &thumbnail_title)
|
||||
|| is_state_slot)
|
||||
{
|
||||
/* State slot title */
|
||||
@ -6504,10 +6502,6 @@ static void *rgui_init(void **userdata, bool video_is_threaded)
|
||||
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->gfx_thumbnails_prev = -1;
|
||||
@ -6562,8 +6556,6 @@ static void rgui_free(void *data)
|
||||
if (rgui->flags & RGUI_FLAG_WIDGETS_SUPPORTED)
|
||||
gfx_display_deinit_white_texture();
|
||||
#endif
|
||||
if (rgui->thumbnail_path_data)
|
||||
free(rgui->thumbnail_path_data);
|
||||
|
||||
rgui_fonts_free(rgui);
|
||||
|
||||
@ -6709,33 +6701,14 @@ static void rgui_navigation_clear(void *data, bool pending_push)
|
||||
rgui->scroll_y = 0;
|
||||
}
|
||||
|
||||
static void rgui_set_thumbnail_system(void *userdata, char *s, size_t len)
|
||||
{
|
||||
rgui_t *rgui = (rgui_t*)userdata;
|
||||
if (rgui)
|
||||
gfx_thumbnail_set_system(
|
||||
rgui->thumbnail_path_data, s, playlist_get_cached());
|
||||
}
|
||||
|
||||
static size_t rgui_get_thumbnail_system(void *userdata, char *s, size_t len)
|
||||
{
|
||||
rgui_t *rgui = (rgui_t*)userdata;
|
||||
const char *system = NULL;
|
||||
if (!rgui)
|
||||
return 0;
|
||||
if (!gfx_thumbnail_get_system(rgui->thumbnail_path_data, &system))
|
||||
return 0;
|
||||
return strlcpy(s, system, len);
|
||||
}
|
||||
|
||||
static void rgui_load_current_thumbnails(rgui_t *rgui, bool download_missing)
|
||||
static void rgui_load_current_thumbnails(rgui_t *rgui, struct menu_state *menu_st, bool download_missing)
|
||||
{
|
||||
const char *thumbnail_path = NULL;
|
||||
const char *left_thumbnail_path = NULL;
|
||||
bool thumbnails_missing = false;
|
||||
|
||||
/* Right (or fullscreen) thumbnail */
|
||||
if (gfx_thumbnail_get_path(rgui->thumbnail_path_data,
|
||||
if (gfx_thumbnail_get_path(menu_st->thumbnail_path_data,
|
||||
GFX_THUMBNAIL_RIGHT, &thumbnail_path))
|
||||
{
|
||||
if (rgui_request_thumbnail(
|
||||
@ -6757,7 +6730,7 @@ static void rgui_load_current_thumbnails(rgui_t *rgui, bool download_missing)
|
||||
if ( !(rgui->flags & RGUI_FLAG_SHOW_FULLSCREEN_THUMBNAIL)
|
||||
&& string_is_empty(rgui->savestate_thumbnail_file_path))
|
||||
{
|
||||
if (gfx_thumbnail_get_path(rgui->thumbnail_path_data,
|
||||
if (gfx_thumbnail_get_path(menu_st->thumbnail_path_data,
|
||||
GFX_THUMBNAIL_LEFT, &left_thumbnail_path))
|
||||
{
|
||||
if (rgui_request_thumbnail(
|
||||
@ -6773,7 +6746,7 @@ static void rgui_load_current_thumbnails(rgui_t *rgui, bool download_missing)
|
||||
}
|
||||
else if (!string_is_empty(rgui->savestate_thumbnail_file_path))
|
||||
{
|
||||
if (gfx_thumbnail_get_path(rgui->thumbnail_path_data,
|
||||
if (gfx_thumbnail_get_path(menu_st->thumbnail_path_data,
|
||||
GFX_THUMBNAIL_LEFT, &left_thumbnail_path))
|
||||
{
|
||||
if (rgui_request_thumbnail(
|
||||
@ -6805,9 +6778,9 @@ static void rgui_load_current_thumbnails(rgui_t *rgui, bool download_missing)
|
||||
|
||||
/* Explore list needs cached selection index */
|
||||
if (rgui->flags & RGUI_FLAG_IS_EXPLORE_LIST)
|
||||
selection = gfx_thumbnail_get_playlist_index(rgui->thumbnail_path_data);
|
||||
selection = gfx_thumbnail_get_playlist_index(menu_st->thumbnail_path_data);
|
||||
|
||||
if (gfx_thumbnail_get_system(rgui->thumbnail_path_data, &system))
|
||||
if (gfx_thumbnail_get_system(menu_st->thumbnail_path_data, &system))
|
||||
task_push_pl_entry_thumbnail_download(system,
|
||||
playlist, (unsigned)selection,
|
||||
false, true);
|
||||
@ -6967,7 +6940,7 @@ static void rgui_scan_selected_entry_thumbnail(rgui_t *rgui, bool force_load)
|
||||
rgui->playlist_index = playlist_index;
|
||||
}
|
||||
|
||||
gfx_thumbnail_set_content_playlist(rgui->thumbnail_path_data,
|
||||
gfx_thumbnail_set_content_playlist(menu_st->thumbnail_path_data,
|
||||
playlist_valid ? playlist_get_cached() : NULL, playlist_index);
|
||||
}
|
||||
else if (rgui->is_quick_menu)
|
||||
@ -6977,7 +6950,7 @@ static void rgui_scan_selected_entry_thumbnail(rgui_t *rgui, bool force_load)
|
||||
|
||||
playlist_index = rgui->playlist_index;
|
||||
|
||||
gfx_thumbnail_set_content_playlist(rgui->thumbnail_path_data,
|
||||
gfx_thumbnail_set_content_playlist(menu_st->thumbnail_path_data,
|
||||
playlist_valid ? playlist_get_cached() : NULL, playlist_index);
|
||||
}
|
||||
#if defined(HAVE_LIBRETRODB)
|
||||
@ -6994,16 +6967,16 @@ static void rgui_scan_selected_entry_thumbnail(rgui_t *rgui, bool force_load)
|
||||
menu_entry_get(&entry, 0, selection, NULL, true);
|
||||
|
||||
rgui->playlist_index =
|
||||
menu_explore_set_playlist_thumbnail(entry.type, rgui->thumbnail_path_data);
|
||||
menu_explore_set_playlist_thumbnail(entry.type, menu_st->thumbnail_path_data);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
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 (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
|
||||
has_thumbnail = gfx_thumbnail_update_path(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT);
|
||||
|
||||
if (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;
|
||||
if (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
has_thumbnail = gfx_thumbnail_update_path(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT) || has_thumbnail;
|
||||
}
|
||||
|
||||
/* Save state thumbnails */
|
||||
@ -7022,7 +6995,7 @@ static void rgui_scan_selected_entry_thumbnail(rgui_t *rgui, bool force_load)
|
||||
{
|
||||
/* Check whether thumbnails should be loaded immediately */
|
||||
if ((menu_rgui_thumbnail_delay == 0) || force_load)
|
||||
rgui_load_current_thumbnails(rgui, network_on_demand_thumbnails);
|
||||
rgui_load_current_thumbnails(rgui, menu_st, network_on_demand_thumbnails);
|
||||
else
|
||||
{
|
||||
/* Schedule a delayed load */
|
||||
@ -7085,6 +7058,7 @@ static void rgui_toggle_fs_thumbnail(rgui_t *rgui,
|
||||
static void rgui_refresh_thumbnail_image(void *userdata, unsigned i)
|
||||
{
|
||||
rgui_t *rgui = (rgui_t*)userdata;
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
settings_t *settings = config_get_ptr();
|
||||
bool rgui_inline_thumbnails = false;
|
||||
if (!rgui || !settings)
|
||||
@ -7094,8 +7068,8 @@ static void rgui_refresh_thumbnail_image(void *userdata, unsigned i)
|
||||
|
||||
/* Only refresh thumbnails if thumbnails are enabled */
|
||||
if ( ((rgui->flags & RGUI_FLAG_SHOW_FULLSCREEN_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)))
|
||||
&& (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT)))
|
||||
{
|
||||
/* In all cases, reset current thumbnails */
|
||||
rgui->fs_thumbnail.width = 0;
|
||||
@ -7500,6 +7474,7 @@ static void rgui_frame(void *data, video_frame_info_t *video_info)
|
||||
{
|
||||
rgui_t *rgui = (rgui_t*)data;
|
||||
settings_t *settings = config_get_ptr();
|
||||
struct menu_state *menu_st = menu_state_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;
|
||||
#if defined(DINGUX)
|
||||
@ -7740,7 +7715,7 @@ static void rgui_frame(void *data, video_frame_info_t *video_info)
|
||||
(settings->uints.menu_rgui_thumbnail_delay * 1000 * ((rgui->flags & RGUI_FLAG_SHOW_FULLSCREEN_THUMBNAIL)
|
||||
? 1.5f
|
||||
: 1.0f)))
|
||||
rgui_load_current_thumbnails(rgui,
|
||||
rgui_load_current_thumbnails(rgui, menu_st,
|
||||
settings->bools.network_on_demand_thumbnails);
|
||||
}
|
||||
|
||||
@ -8153,8 +8128,6 @@ menu_ctx_driver_t menu_ctx_rgui = {
|
||||
NULL, /* update_thumbnail_path */
|
||||
rgui_update_thumbnail_image,
|
||||
rgui_refresh_thumbnail_image,
|
||||
rgui_set_thumbnail_system,
|
||||
rgui_get_thumbnail_system,
|
||||
NULL, /* set_thumbnail_content */
|
||||
rgui_osk_ptr_at_pos,
|
||||
rgui_update_savestate_thumbnail_path,
|
||||
|
@ -326,7 +326,6 @@ typedef struct xmb_handle
|
||||
|
||||
menu_screensaver_t *screensaver;
|
||||
|
||||
gfx_thumbnail_path_data_t *thumbnail_path_data;
|
||||
struct {
|
||||
gfx_thumbnail_t right;
|
||||
gfx_thumbnail_t left;
|
||||
@ -1208,10 +1207,10 @@ static void xmb_update_savestate_thumbnail_path(void *data, unsigned i)
|
||||
|
||||
if (!string_is_empty(entry.label))
|
||||
{
|
||||
if (string_to_unsigned(entry.label) == MENU_ENUM_LABEL_STATE_SLOT ||
|
||||
string_is_equal(entry.label, "state_slot") ||
|
||||
string_is_equal(entry.label, "loadstate") ||
|
||||
string_is_equal(entry.label, "savestate"))
|
||||
if ( (string_to_unsigned(entry.label) == MENU_ENUM_LABEL_STATE_SLOT)
|
||||
|| string_is_equal(entry.label, "state_slot")
|
||||
|| string_is_equal(entry.label, "loadstate")
|
||||
|| string_is_equal(entry.label, "savestate"))
|
||||
{
|
||||
char path[8204];
|
||||
runloop_state_t *runloop_st = runloop_state_get_ptr();
|
||||
@ -1260,8 +1259,9 @@ static void xmb_update_savestate_thumbnail_path(void *data, unsigned i)
|
||||
|
||||
static void xmb_update_thumbnail_image(void *data)
|
||||
{
|
||||
xmb_handle_t *xmb = (xmb_handle_t*)data;
|
||||
const char *core_name = NULL;
|
||||
xmb_handle_t *xmb = (xmb_handle_t*)data;
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
const char *core_name = NULL;
|
||||
|
||||
if (!xmb)
|
||||
return;
|
||||
@ -1276,28 +1276,28 @@ static void xmb_update_thumbnail_image(void *data)
|
||||
}
|
||||
|
||||
/* imageviewer content requires special treatment... */
|
||||
gfx_thumbnail_get_core_name(xmb->thumbnail_path_data, &core_name);
|
||||
gfx_thumbnail_get_core_name(menu_st->thumbnail_path_data, &core_name);
|
||||
|
||||
if (string_is_equal(core_name, "imageviewer"))
|
||||
{
|
||||
/* Right thumbnail */
|
||||
if (gfx_thumbnail_is_enabled(xmb->thumbnail_path_data,
|
||||
if (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data,
|
||||
GFX_THUMBNAIL_RIGHT))
|
||||
xmb->thumbnails.pending = XMB_PENDING_THUMBNAIL_RIGHT;
|
||||
/* Left thumbnail */
|
||||
else if (gfx_thumbnail_is_enabled(xmb->thumbnail_path_data,
|
||||
else if (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data,
|
||||
GFX_THUMBNAIL_LEFT))
|
||||
xmb->thumbnails.pending = XMB_PENDING_THUMBNAIL_LEFT;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Right thumbnail */
|
||||
if (gfx_thumbnail_is_enabled(xmb->thumbnail_path_data,
|
||||
if (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data,
|
||||
GFX_THUMBNAIL_RIGHT))
|
||||
xmb->thumbnails.pending = XMB_PENDING_THUMBNAIL_RIGHT;
|
||||
|
||||
/* Left thumbnail */
|
||||
if (gfx_thumbnail_is_enabled(xmb->thumbnail_path_data,
|
||||
if (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data,
|
||||
GFX_THUMBNAIL_LEFT))
|
||||
xmb->thumbnails.pending =
|
||||
(xmb->thumbnails.pending == XMB_PENDING_THUMBNAIL_RIGHT) ?
|
||||
@ -1324,39 +1324,19 @@ static unsigned xmb_get_horizontal_selection_type(xmb_handle_t *xmb)
|
||||
|
||||
static void xmb_refresh_thumbnail_image(void *data, unsigned i)
|
||||
{
|
||||
xmb_handle_t *xmb = (xmb_handle_t*)data;
|
||||
xmb_handle_t *xmb = (xmb_handle_t*)data;
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
|
||||
if (!xmb)
|
||||
return;
|
||||
|
||||
/* Only refresh thumbnails if thumbnails are enabled */
|
||||
if ((gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_LEFT)) &&
|
||||
(xmb->is_quick_menu || xmb->is_playlist || xmb->is_explore_list))
|
||||
if ( (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
&& (xmb->is_quick_menu || xmb->is_playlist || xmb->is_explore_list))
|
||||
xmb_update_thumbnail_image(xmb);
|
||||
}
|
||||
|
||||
static void xmb_set_thumbnail_system(void *data, char*s, size_t len)
|
||||
{
|
||||
xmb_handle_t *xmb = (xmb_handle_t*)data;
|
||||
if (!xmb)
|
||||
return;
|
||||
|
||||
gfx_thumbnail_set_system(
|
||||
xmb->thumbnail_path_data, s, playlist_get_cached());
|
||||
}
|
||||
|
||||
static size_t xmb_get_thumbnail_system(void *data, char*s, size_t len)
|
||||
{
|
||||
xmb_handle_t *xmb = (xmb_handle_t*)data;
|
||||
const char *system = NULL;
|
||||
if (!xmb)
|
||||
return 0;
|
||||
if (!gfx_thumbnail_get_system(xmb->thumbnail_path_data, &system))
|
||||
return 0;
|
||||
return strlcpy(s, system, len);
|
||||
}
|
||||
|
||||
static void xmb_unload_thumbnail_textures(void *data)
|
||||
{
|
||||
xmb_handle_t *xmb = (xmb_handle_t*)data;
|
||||
@ -1399,15 +1379,15 @@ static void xmb_set_thumbnail_content(void *data, const char *s)
|
||||
|
||||
/* Get playlist index corresponding
|
||||
* to the selected entry */
|
||||
if (list &&
|
||||
(selection < list_size) &&
|
||||
(list->list[selection].type == FILE_TYPE_RPL_ENTRY))
|
||||
if ( list
|
||||
&& (selection < list_size)
|
||||
&& (list->list[selection].type == FILE_TYPE_RPL_ENTRY))
|
||||
{
|
||||
playlist_valid = true;
|
||||
playlist_index = list->list[selection].entry_idx;
|
||||
}
|
||||
|
||||
gfx_thumbnail_set_content_playlist(xmb->thumbnail_path_data,
|
||||
gfx_thumbnail_set_content_playlist(menu_st->thumbnail_path_data,
|
||||
playlist_valid ? playlist_get_cached() : NULL, playlist_index);
|
||||
xmb->fullscreen_thumbnails_available = true;
|
||||
}
|
||||
@ -1424,7 +1404,7 @@ static void xmb_set_thumbnail_content(void *data, const char *s)
|
||||
|
||||
if (!string_is_empty(entry.path))
|
||||
{
|
||||
gfx_thumbnail_set_content(xmb->thumbnail_path_data, entry.path);
|
||||
gfx_thumbnail_set_content(menu_st->thumbnail_path_data, entry.path);
|
||||
xmb->fullscreen_thumbnails_available = true;
|
||||
}
|
||||
}
|
||||
@ -1442,7 +1422,7 @@ static void xmb_set_thumbnail_content(void *data, const char *s)
|
||||
menu_entry_get(&entry, 0, selection, NULL, true);
|
||||
|
||||
xmb->fullscreen_thumbnails_available =
|
||||
(menu_explore_set_playlist_thumbnail(entry.type, xmb->thumbnail_path_data) >= 0);
|
||||
(menu_explore_set_playlist_thumbnail(entry.type, menu_st->thumbnail_path_data) >= 0);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@ -1459,10 +1439,10 @@ static void xmb_set_thumbnail_content(void *data, const char *s)
|
||||
MENU_ENTRY_INITIALIZE(entry);
|
||||
entry.flags |= MENU_ENTRY_FLAG_PATH_ENABLED;
|
||||
menu_entry_get(&entry, 0, selection, NULL, true);
|
||||
if ( !string_is_empty(entry.path) &&
|
||||
!string_is_empty(node->fullpath))
|
||||
if ( !string_is_empty(entry.path)
|
||||
&& !string_is_empty(node->fullpath))
|
||||
{
|
||||
gfx_thumbnail_set_content_image(xmb->thumbnail_path_data,
|
||||
gfx_thumbnail_set_content_image(menu_st->thumbnail_path_data,
|
||||
node->fullpath, entry.path);
|
||||
xmb->fullscreen_thumbnails_available = true;
|
||||
}
|
||||
@ -1476,7 +1456,7 @@ static void xmb_set_thumbnail_content(void *data, const char *s)
|
||||
* the sublevels of database manager lists.
|
||||
* Showing thumbnails on database entries is a
|
||||
* pointless nuisance and a waste of CPU cycles, IMHO... */
|
||||
gfx_thumbnail_set_content(xmb->thumbnail_path_data, s);
|
||||
gfx_thumbnail_set_content(menu_st->thumbnail_path_data, s);
|
||||
xmb->fullscreen_thumbnails_available = true;
|
||||
}
|
||||
}
|
||||
@ -1584,16 +1564,16 @@ static void xmb_selection_pointer_changed(
|
||||
iz = xmb->items_active_zoom;
|
||||
|
||||
if (
|
||||
gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_LEFT)
|
||||
gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT)
|
||||
)
|
||||
{
|
||||
bool update_thumbnails = false;
|
||||
|
||||
/* Playlist updates */
|
||||
if (((xmb_system_tab > XMB_SYSTEM_TAB_SETTINGS && depth == 1) ||
|
||||
(xmb_system_tab < XMB_SYSTEM_TAB_SETTINGS && depth == 4)) &&
|
||||
xmb->is_playlist)
|
||||
if (( (xmb_system_tab > XMB_SYSTEM_TAB_SETTINGS && depth == 1)
|
||||
|| (xmb_system_tab < XMB_SYSTEM_TAB_SETTINGS && depth == 4))
|
||||
&& xmb->is_playlist)
|
||||
{
|
||||
xmb_set_thumbnail_content(xmb, NULL);
|
||||
update_thumbnails = true;
|
||||
@ -1633,8 +1613,8 @@ static void xmb_selection_pointer_changed(
|
||||
* (otherwise last loaded thumbnail will
|
||||
* persist, and be shown on the wrong entry) */
|
||||
xmb->fullscreen_thumbnails_available = false;
|
||||
xmb->thumbnails.pending = XMB_PENDING_THUMBNAIL_NONE;
|
||||
gfx_thumbnail_set_content(xmb->thumbnail_path_data, NULL);
|
||||
xmb->thumbnails.pending = XMB_PENDING_THUMBNAIL_NONE;
|
||||
gfx_thumbnail_set_content(menu_st->thumbnail_path_data, NULL);
|
||||
gfx_thumbnail_cancel_pending_requests();
|
||||
gfx_thumbnail_reset(&xmb->thumbnails.right);
|
||||
gfx_thumbnail_reset(&xmb->thumbnails.left);
|
||||
@ -1844,8 +1824,8 @@ static void xmb_list_open_new(xmb_handle_t *xmb,
|
||||
|
||||
if (xmb_system_tab <= XMB_SYSTEM_TAB_SETTINGS && xmb->depth > xmb->old_depth)
|
||||
{
|
||||
if ( gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
if ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
{
|
||||
if (xmb->is_playlist || xmb->is_db_manager_list)
|
||||
{
|
||||
@ -1858,9 +1838,9 @@ static void xmb_list_open_new(xmb_handle_t *xmb,
|
||||
}
|
||||
}
|
||||
|
||||
if (savestate_thumbnail_enable &&
|
||||
((xmb->is_quick_menu && xmb->depth >= 2) ||
|
||||
(xmb->is_state_slot)))
|
||||
if ( savestate_thumbnail_enable
|
||||
&& ((xmb->is_quick_menu && xmb->depth >= 2)
|
||||
|| (xmb->is_state_slot)))
|
||||
{
|
||||
/* This shows savestate thumbnail after
|
||||
* opening savestate submenu */
|
||||
@ -2093,17 +2073,17 @@ static void xmb_list_switch_horizontal_list(xmb_handle_t *xmb)
|
||||
for (j = 0; j <= list_size; j++)
|
||||
{
|
||||
gfx_animation_ctx_entry_t entry;
|
||||
float ia = xmb->categories_passive_alpha;
|
||||
float iz = xmb->categories_passive_zoom;
|
||||
xmb_node_t *node = xmb_get_node(xmb, j);
|
||||
float ia = xmb->categories_passive_alpha;
|
||||
float iz = xmb->categories_passive_zoom;
|
||||
xmb_node_t *node = xmb_get_node(xmb, j);
|
||||
|
||||
if (!node)
|
||||
continue;
|
||||
|
||||
if (j == xmb->categories_active_idx)
|
||||
{
|
||||
ia = xmb->categories_active_alpha;
|
||||
iz = xmb->categories_active_zoom;
|
||||
ia = xmb->categories_active_alpha;
|
||||
iz = xmb->categories_active_zoom;
|
||||
}
|
||||
|
||||
if (!xmb->allow_horizontal_animation)
|
||||
@ -2218,8 +2198,8 @@ static void xmb_list_switch(xmb_handle_t *xmb)
|
||||
|
||||
xmb->categories_active_idx_old = (unsigned)xmb->categories_selection_ptr;
|
||||
|
||||
if (gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
if ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
{
|
||||
xmb_unload_thumbnail_textures(xmb);
|
||||
|
||||
@ -2713,9 +2693,10 @@ static void xmb_populate_entries(void *data,
|
||||
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_IMAGES_LIST))
|
||||
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_MUSIC_LIST))
|
||||
|| string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_VIDEO_LIST));
|
||||
xmb->is_playlist = xmb->is_playlist &&
|
||||
!string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INFORMATION)) &&
|
||||
!string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL));
|
||||
xmb->is_playlist =
|
||||
xmb->is_playlist
|
||||
&& !string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INFORMATION))
|
||||
&& !string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_DEFERRED_RDB_ENTRY_DETAIL));
|
||||
|
||||
xmb->is_playlist_information =
|
||||
string_is_equal(label, msg_hash_to_str(MENU_ENUM_LABEL_INFORMATION)) ||
|
||||
@ -2837,8 +2818,8 @@ static void xmb_populate_entries(void *data,
|
||||
(xmb->is_playlist || xmb->is_db_manager_list || xmb->is_file_list) &&
|
||||
!((xmb_system_tab > XMB_SYSTEM_TAB_SETTINGS) && (xmb->depth > 2));
|
||||
|
||||
if ((xmb->is_quick_menu || xmb->is_state_slot) &&
|
||||
!string_is_empty(xmb->savestate_thumbnail_file_path))
|
||||
if ( (xmb->is_quick_menu || xmb->is_state_slot)
|
||||
&& !string_is_empty(xmb->savestate_thumbnail_file_path))
|
||||
{
|
||||
xmb->fullscreen_thumbnails_available = true;
|
||||
}
|
||||
@ -2859,8 +2840,8 @@ static void xmb_populate_entries(void *data,
|
||||
else if (xmb->is_file_list)
|
||||
{
|
||||
xmb->fullscreen_thumbnails_available = false;
|
||||
xmb->thumbnails.pending = XMB_PENDING_THUMBNAIL_NONE;
|
||||
gfx_thumbnail_set_content(xmb->thumbnail_path_data, NULL);
|
||||
xmb->thumbnails.pending = XMB_PENDING_THUMBNAIL_NONE;
|
||||
gfx_thumbnail_set_content(menu_st->thumbnail_path_data, NULL);
|
||||
gfx_thumbnail_cancel_pending_requests();
|
||||
gfx_thumbnail_reset(&xmb->thumbnails.right);
|
||||
gfx_thumbnail_reset(&xmb->thumbnails.left);
|
||||
@ -3319,9 +3300,9 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||
playlist_get_index(playlist_get_cached(),
|
||||
0, &pl_entry);
|
||||
|
||||
if (pl_entry &&
|
||||
!string_is_empty(pl_entry->db_name) &&
|
||||
(db_node = RHMAP_GET_STR(xmb->playlist_db_node_map, pl_entry->db_name)))
|
||||
if ( pl_entry
|
||||
&& !string_is_empty(pl_entry->db_name)
|
||||
&& (db_node = RHMAP_GET_STR(xmb->playlist_db_node_map, pl_entry->db_name)))
|
||||
{
|
||||
switch (type)
|
||||
{
|
||||
@ -3458,8 +3439,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||
|
||||
#ifdef HAVE_CHEEVOS
|
||||
if (
|
||||
(type >= MENU_SETTINGS_CHEEVOS_START) &&
|
||||
(type < MENU_SETTINGS_NETPLAY_ROOMS_START)
|
||||
(type >= MENU_SETTINGS_CHEEVOS_START)
|
||||
&& (type < MENU_SETTINGS_NETPLAY_ROOMS_START)
|
||||
)
|
||||
{
|
||||
char buffer[64];
|
||||
@ -3478,8 +3459,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||
#endif
|
||||
|
||||
if (
|
||||
(type >= MENU_SETTINGS_INPUT_BEGIN) &&
|
||||
(type <= MENU_SETTINGS_INPUT_DESC_KBD_END)
|
||||
(type >= MENU_SETTINGS_INPUT_BEGIN)
|
||||
&& (type <= MENU_SETTINGS_INPUT_DESC_KBD_END)
|
||||
)
|
||||
{
|
||||
unsigned input_id;
|
||||
@ -3592,8 +3573,8 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||
return xmb->textures.list[XMB_TEXTURE_INPUT_STCK_R];
|
||||
}
|
||||
if (
|
||||
(type >= MENU_SETTINGS_REMAPPING_PORT_BEGIN) &&
|
||||
(type <= MENU_SETTINGS_REMAPPING_PORT_END)
|
||||
(type >= MENU_SETTINGS_REMAPPING_PORT_BEGIN)
|
||||
&& (type <= MENU_SETTINGS_REMAPPING_PORT_END)
|
||||
)
|
||||
return xmb->textures.list[XMB_TEXTURE_INPUT_SETTINGS];
|
||||
if (checked)
|
||||
@ -3604,6 +3585,7 @@ static uintptr_t xmb_icon_get_id(xmb_handle_t *xmb,
|
||||
}
|
||||
|
||||
static int xmb_draw_item(
|
||||
struct menu_state *menu_st,
|
||||
void *userdata,
|
||||
gfx_display_t *p_disp,
|
||||
gfx_animation_t *p_anim,
|
||||
@ -3767,13 +3749,13 @@ static int xmb_draw_item(
|
||||
{
|
||||
if (
|
||||
(
|
||||
(xmb->thumbnails.savestate.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
|| (gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
&& ( (xmb->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
|| (xmb->thumbnails.right.status == GFX_THUMBNAIL_STATUS_PENDING)))
|
||||
|| (gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_LEFT)
|
||||
&& ( (xmb->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
|| (xmb->thumbnails.left.status == GFX_THUMBNAIL_STATUS_PENDING)))
|
||||
(xmb->thumbnails.savestate.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
|| (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
&& ((xmb->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
|| (xmb->thumbnails.right.status == GFX_THUMBNAIL_STATUS_PENDING)))
|
||||
|| (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT)
|
||||
&& ((xmb->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
|| (xmb->thumbnails.left.status == GFX_THUMBNAIL_STATUS_PENDING)))
|
||||
)
|
||||
&& !xmb->is_playlist_information
|
||||
&& xmb->use_ps3_layout
|
||||
@ -3964,16 +3946,16 @@ static int xmb_draw_item(
|
||||
/* Draw top/bottom line fade effect, if required */
|
||||
if (use_smooth_ticker)
|
||||
{
|
||||
if (!string_is_empty(entry_sublabel_top_fade) &&
|
||||
ticker_top_fade_alpha > 0.0f)
|
||||
if ( !string_is_empty(entry_sublabel_top_fade)
|
||||
&& ticker_top_fade_alpha > 0.0f)
|
||||
xmb_draw_text(xmb_shadows_enable, xmb, settings,
|
||||
entry_sublabel_top_fade,
|
||||
sublabel_x, ticker_top_fade_y_offset + sublabel_y,
|
||||
1, ticker_top_fade_alpha * node->label_alpha, TEXT_ALIGN_LEFT,
|
||||
width, height, xmb->font2);
|
||||
|
||||
if (!string_is_empty(entry_sublabel_bottom_fade) &&
|
||||
ticker_bottom_fade_alpha > 0.0f)
|
||||
if ( !string_is_empty(entry_sublabel_bottom_fade)
|
||||
&& ticker_bottom_fade_alpha > 0.0f)
|
||||
xmb_draw_text(xmb_shadows_enable, xmb, settings,
|
||||
entry_sublabel_bottom_fade,
|
||||
sublabel_x, ticker_bottom_fade_y_offset + sublabel_y,
|
||||
@ -4052,11 +4034,12 @@ static int xmb_draw_item(
|
||||
gfx_display_set_alpha(color, MIN(node->alpha, xmb->alpha));
|
||||
|
||||
if (
|
||||
(!xmb->assets_missing) &&
|
||||
(color[3] != 0) &&
|
||||
(
|
||||
(entry.flags & MENU_ENTRY_FLAG_CHECKED) ||
|
||||
!((entry_type >= MENU_SETTING_DROPDOWN_ITEM) && (entry_type <= MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM_SPECIAL))
|
||||
(!xmb->assets_missing)
|
||||
&& (color[3] != 0)
|
||||
&& (
|
||||
(entry.flags & MENU_ENTRY_FLAG_CHECKED)
|
||||
|| !((entry_type >= MENU_SETTING_DROPDOWN_ITEM)
|
||||
&& (entry_type <= MENU_SETTING_DROPDOWN_SETTING_UINT_ITEM_SPECIAL))
|
||||
)
|
||||
)
|
||||
{
|
||||
@ -4135,9 +4118,9 @@ static int xmb_draw_item(
|
||||
playlist_get_index(playlist_get_cached(),
|
||||
entry.entry_idx, &pl_entry);
|
||||
|
||||
if (pl_entry &&
|
||||
!string_is_empty(pl_entry->db_name) &&
|
||||
(db_node = RHMAP_GET_STR(xmb->playlist_db_node_map, pl_entry->db_name)))
|
||||
if ( pl_entry
|
||||
&& !string_is_empty(pl_entry->db_name)
|
||||
&& (db_node = RHMAP_GET_STR(xmb->playlist_db_node_map, pl_entry->db_name)))
|
||||
{
|
||||
switch (show_history_icons)
|
||||
{
|
||||
@ -4286,19 +4269,20 @@ static void xmb_draw_items(
|
||||
for (i = first; i <= last; i++)
|
||||
{
|
||||
if (xmb_draw_item(
|
||||
userdata,
|
||||
p_disp,
|
||||
p_anim,
|
||||
dispctx,
|
||||
settings,
|
||||
video_width,
|
||||
video_height,
|
||||
xmb_shadows_enable,
|
||||
mymat,
|
||||
xmb, core_node,
|
||||
list, color,
|
||||
i, current,
|
||||
width, height) == -1)
|
||||
menu_st,
|
||||
userdata,
|
||||
p_disp,
|
||||
p_anim,
|
||||
dispctx,
|
||||
settings,
|
||||
video_width,
|
||||
video_height,
|
||||
xmb_shadows_enable,
|
||||
mymat,
|
||||
xmb, core_node,
|
||||
list, color,
|
||||
i, current,
|
||||
width, height) == -1)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -4388,7 +4372,8 @@ static void xmb_hide_fullscreen_thumbnails(
|
||||
/* Enables (and triggers a fade in of) the fullscreen
|
||||
* thumbnail view */
|
||||
static void xmb_show_fullscreen_thumbnails(
|
||||
xmb_handle_t *xmb, size_t selection)
|
||||
xmb_handle_t *xmb, struct menu_state *menu_st,
|
||||
size_t selection)
|
||||
{
|
||||
gfx_animation_ctx_entry_t animation_entry;
|
||||
const char *core_name = NULL;
|
||||
@ -4400,25 +4385,25 @@ static void xmb_show_fullscreen_thumbnails(
|
||||
* current selection has at least one valid thumbnail
|
||||
* and all thumbnails for current selection are already
|
||||
* loaded/available */
|
||||
gfx_thumbnail_get_core_name(xmb->thumbnail_path_data, &core_name);
|
||||
if ( string_is_equal(core_name, "imageviewer") ||
|
||||
!string_is_empty(xmb->savestate_thumbnail_file_path))
|
||||
gfx_thumbnail_get_core_name(menu_st->thumbnail_path_data, &core_name);
|
||||
if ( string_is_equal(core_name, "imageviewer")
|
||||
|| !string_is_empty(xmb->savestate_thumbnail_file_path))
|
||||
{
|
||||
/* imageviewer content requires special treatment,
|
||||
* since only one thumbnail can ever be loaded
|
||||
* at a time */
|
||||
if (gfx_thumbnail_is_enabled(
|
||||
xmb->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
|
||||
menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT))
|
||||
{
|
||||
if ( xmb->thumbnails.right.status
|
||||
!= GFX_THUMBNAIL_STATUS_AVAILABLE &&
|
||||
xmb->thumbnails.savestate.status
|
||||
!= GFX_THUMBNAIL_STATUS_AVAILABLE
|
||||
&& xmb->thumbnails.savestate.status
|
||||
!= GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
return;
|
||||
}
|
||||
else if (
|
||||
gfx_thumbnail_is_enabled(
|
||||
xmb->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
{
|
||||
if (
|
||||
xmb->thumbnails.left.status
|
||||
@ -4431,21 +4416,21 @@ static void xmb_show_fullscreen_thumbnails(
|
||||
else
|
||||
{
|
||||
bool left_thumbnail_enabled = gfx_thumbnail_is_enabled(
|
||||
xmb->thumbnail_path_data, GFX_THUMBNAIL_LEFT);
|
||||
menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT);
|
||||
|
||||
if (( xmb->thumbnails.right.status
|
||||
== GFX_THUMBNAIL_STATUS_AVAILABLE) &&
|
||||
(left_thumbnail_enabled &&
|
||||
(( xmb->thumbnails.left.status
|
||||
!= GFX_THUMBNAIL_STATUS_MISSING) &&
|
||||
( xmb->thumbnails.left.status
|
||||
!= GFX_THUMBNAIL_STATUS_AVAILABLE))))
|
||||
== GFX_THUMBNAIL_STATUS_AVAILABLE)
|
||||
&& (left_thumbnail_enabled
|
||||
&& ((xmb->thumbnails.left.status
|
||||
!= GFX_THUMBNAIL_STATUS_MISSING)
|
||||
&& (xmb->thumbnails.left.status
|
||||
!= GFX_THUMBNAIL_STATUS_AVAILABLE))))
|
||||
return;
|
||||
|
||||
if (( xmb->thumbnails.right.status
|
||||
== GFX_THUMBNAIL_STATUS_MISSING) &&
|
||||
(!left_thumbnail_enabled ||
|
||||
( xmb->thumbnails.left.status
|
||||
== GFX_THUMBNAIL_STATUS_MISSING)
|
||||
&& (!left_thumbnail_enabled
|
||||
|| ( xmb->thumbnails.left.status
|
||||
!= GFX_THUMBNAIL_STATUS_AVAILABLE)))
|
||||
return;
|
||||
}
|
||||
@ -4482,18 +4467,19 @@ static void xmb_show_fullscreen_thumbnails(
|
||||
xmb->show_fullscreen_thumbnails = true;
|
||||
}
|
||||
|
||||
static bool INLINE xmb_fullscreen_thumbnails_available(xmb_handle_t *xmb)
|
||||
static bool INLINE xmb_fullscreen_thumbnails_available(xmb_handle_t *xmb,
|
||||
struct menu_state *menu_st)
|
||||
{
|
||||
bool ret =
|
||||
xmb->fullscreen_thumbnails_available
|
||||
&& (gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
&& (xmb->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE ||
|
||||
xmb->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE);
|
||||
&& (gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
&& (xmb->thumbnails.left.status == GFX_THUMBNAIL_STATUS_AVAILABLE
|
||||
|| xmb->thumbnails.right.status == GFX_THUMBNAIL_STATUS_AVAILABLE);
|
||||
|
||||
if (xmb->is_state_slot &&
|
||||
(xmb->thumbnails.savestate.status == GFX_THUMBNAIL_STATUS_MISSING ||
|
||||
xmb->thumbnails.savestate.status == GFX_THUMBNAIL_STATUS_UNKNOWN))
|
||||
if ( xmb->is_state_slot
|
||||
&& (xmb->thumbnails.savestate.status == GFX_THUMBNAIL_STATUS_MISSING
|
||||
|| xmb->thumbnails.savestate.status == GFX_THUMBNAIL_STATUS_UNKNOWN))
|
||||
ret = false;
|
||||
|
||||
return ret;
|
||||
@ -4585,11 +4571,11 @@ static enum menu_action xmb_parse_menu_entry_action(
|
||||
|
||||
/* If this is a menu with thumbnails, attempt
|
||||
* to show fullscreen thumbnail view */
|
||||
if (xmb_fullscreen_thumbnails_available(xmb) &&
|
||||
!xmb->show_fullscreen_thumbnails)
|
||||
if ( xmb_fullscreen_thumbnails_available(xmb, menu_st)
|
||||
&& !xmb->show_fullscreen_thumbnails)
|
||||
{
|
||||
xmb_hide_fullscreen_thumbnails(xmb, false);
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st->selection_ptr);
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st, menu_st->selection_ptr);
|
||||
xmb->want_fullscreen_thumbnails = true;
|
||||
xmb_set_thumbnail_delay(false);
|
||||
new_action = MENU_ACTION_NOOP;
|
||||
@ -4608,7 +4594,7 @@ static enum menu_action xmb_parse_menu_entry_action(
|
||||
(xmb->is_quick_menu && !string_is_empty(xmb->savestate_thumbnail_file_path))))
|
||||
{
|
||||
xmb_hide_fullscreen_thumbnails(xmb, false);
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st->selection_ptr);
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st, menu_st->selection_ptr);
|
||||
xmb->want_fullscreen_thumbnails = true;
|
||||
new_action = MENU_ACTION_NOOP;
|
||||
}
|
||||
@ -4633,13 +4619,13 @@ static enum menu_action xmb_parse_menu_entry_action(
|
||||
to prevent accidental imageviewer core launch */
|
||||
if ( xmb->libretro_running
|
||||
&& xmb->is_file_list
|
||||
&& xmb_fullscreen_thumbnails_available(xmb)
|
||||
&& xmb_fullscreen_thumbnails_available(xmb, menu_st)
|
||||
&& xmb_get_system_tab(xmb, (unsigned)xmb->categories_selection_ptr) == XMB_SYSTEM_TAB_MAIN)
|
||||
{
|
||||
if (xmb->show_fullscreen_thumbnails)
|
||||
xmb_hide_fullscreen_thumbnails(xmb, true);
|
||||
else
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st->selection_ptr);
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st, menu_st->selection_ptr);
|
||||
return MENU_ACTION_NOOP;
|
||||
}
|
||||
|
||||
@ -4944,13 +4930,13 @@ static void xmb_render(void *data,
|
||||
|
||||
/* Explore list needs cached selection index */
|
||||
if (xmb->is_explore_list)
|
||||
selection = gfx_thumbnail_get_playlist_index(xmb->thumbnail_path_data);
|
||||
selection = gfx_thumbnail_get_playlist_index(menu_st->thumbnail_path_data);
|
||||
|
||||
switch (xmb->thumbnails.pending)
|
||||
{
|
||||
case XMB_PENDING_THUMBNAIL_BOTH:
|
||||
gfx_thumbnail_request_streams(
|
||||
xmb->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
playlist, selection,
|
||||
&xmb->thumbnails.right,
|
||||
@ -4958,14 +4944,14 @@ static void xmb_render(void *data,
|
||||
gfx_thumbnail_upscale_threshold,
|
||||
network_on_demand_thumbnails);
|
||||
if (( xmb->thumbnails.right.status
|
||||
!= GFX_THUMBNAIL_STATUS_UNKNOWN) &&
|
||||
( xmb->thumbnails.left.status
|
||||
!= GFX_THUMBNAIL_STATUS_UNKNOWN)
|
||||
&& ( xmb->thumbnails.left.status
|
||||
!= GFX_THUMBNAIL_STATUS_UNKNOWN))
|
||||
xmb->thumbnails.pending = XMB_PENDING_THUMBNAIL_NONE;
|
||||
break;
|
||||
case XMB_PENDING_THUMBNAIL_RIGHT:
|
||||
gfx_thumbnail_request_stream(
|
||||
xmb->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
GFX_THUMBNAIL_RIGHT,
|
||||
playlist, selection,
|
||||
@ -4978,7 +4964,7 @@ static void xmb_render(void *data,
|
||||
break;
|
||||
case XMB_PENDING_THUMBNAIL_LEFT:
|
||||
gfx_thumbnail_request_stream(
|
||||
xmb->thumbnail_path_data,
|
||||
menu_st->thumbnail_path_data,
|
||||
p_anim,
|
||||
GFX_THUMBNAIL_LEFT,
|
||||
playlist, selection,
|
||||
@ -5266,8 +5252,8 @@ static void xmb_draw_fullscreen_thumbnails(
|
||||
* RetroPad A or keyboard 'return' to enter the
|
||||
* quick menu while fullscreen thumbnails are
|
||||
* being displayed */
|
||||
if ((selection != xmb->fullscreen_thumbnail_selection) &&
|
||||
(!xmb->is_quick_menu || xmb->show_fullscreen_thumbnails))
|
||||
if ( (selection != xmb->fullscreen_thumbnail_selection)
|
||||
&& (!xmb->is_quick_menu || xmb->show_fullscreen_thumbnails))
|
||||
goto error;
|
||||
|
||||
/* Get thumbnail pointers */
|
||||
@ -5815,11 +5801,11 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
&& xmb->show_fullscreen_thumbnails
|
||||
&& xmb->fullscreen_thumbnails_available
|
||||
&& (menu_st->selection_ptr != xmb->fullscreen_thumbnail_selection))
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st->selection_ptr);
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st, menu_st->selection_ptr);
|
||||
else if (!xmb->show_fullscreen_thumbnails
|
||||
&& xmb->fullscreen_thumbnails_available
|
||||
&& xmb->want_fullscreen_thumbnails)
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st->selection_ptr);
|
||||
xmb_show_fullscreen_thumbnails(xmb, menu_st, menu_st->selection_ptr);
|
||||
|
||||
/* Note: This is incredibly ugly, but there are
|
||||
* so many combinations here that we would go insane
|
||||
@ -6381,8 +6367,8 @@ static void xmb_frame(void *data, video_frame_info_t *video_info)
|
||||
/* Cursor image */
|
||||
if (xmb->show_mouse)
|
||||
{
|
||||
bool cursor_visible = (video_fullscreen || mouse_grabbed) &&
|
||||
menu_mouse_enable;
|
||||
bool cursor_visible = (video_fullscreen || mouse_grabbed)
|
||||
&& menu_mouse_enable;
|
||||
|
||||
gfx_display_set_alpha(xmb_coord_white, MIN(xmb->alpha, 1.00f));
|
||||
if (cursor_visible)
|
||||
@ -6758,10 +6744,6 @@ static void *xmb_init(void **userdata, bool video_is_threaded)
|
||||
if (!(xmb->screensaver = menu_screensaver_init()))
|
||||
goto error;
|
||||
|
||||
/* Thumbnail initialisation */
|
||||
if (!(xmb->thumbnail_path_data = gfx_thumbnail_path_init()))
|
||||
goto error;
|
||||
|
||||
xmb->savestate_thumbnail_file_path[0] = '\0';
|
||||
xmb->prev_savestate_thumbnail_file_path[0] = '\0';
|
||||
|
||||
@ -6822,9 +6804,6 @@ static void xmb_free(void *data)
|
||||
if (!string_is_empty(xmb->bg_file_path))
|
||||
free(xmb->bg_file_path);
|
||||
|
||||
if (xmb->thumbnail_path_data)
|
||||
free(xmb->thumbnail_path_data);
|
||||
|
||||
menu_screensaver_free(xmb->screensaver);
|
||||
}
|
||||
|
||||
@ -7311,6 +7290,7 @@ static void xmb_context_reset_internal(xmb_handle_t *xmb,
|
||||
char fontpath[PATH_MAX_LENGTH];
|
||||
settings_t *settings = config_get_ptr();
|
||||
gfx_display_t *p_disp = disp_get_ptr();
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
const char *wideglyph_str = msg_hash_get_wideglyph_str();
|
||||
unsigned menu_xmb_theme = settings->uints.menu_xmb_theme;
|
||||
iconpath[0] = bg_file_path[0] = '\0';
|
||||
@ -7392,15 +7372,15 @@ static void xmb_context_reset_internal(xmb_handle_t *xmb,
|
||||
* > Thumbnails are enabled
|
||||
* > This is a playlist, a database list, a file list
|
||||
* or the quick menu */
|
||||
if (gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_RIGHT) ||
|
||||
gfx_thumbnail_is_enabled(xmb->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
if ( gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_RIGHT)
|
||||
|| gfx_thumbnail_is_enabled(menu_st->thumbnail_path_data, GFX_THUMBNAIL_LEFT))
|
||||
{
|
||||
unsigned depth = (unsigned)xmb_list_get_size(xmb, MENU_LIST_PLAIN);
|
||||
unsigned xmb_system_tab = xmb_get_system_tab(xmb, (unsigned)xmb->categories_selection_ptr);
|
||||
|
||||
if (((((xmb_system_tab > XMB_SYSTEM_TAB_SETTINGS && depth == 1) ||
|
||||
(xmb_system_tab < XMB_SYSTEM_TAB_SETTINGS && depth == 4)) &&
|
||||
xmb->is_playlist))
|
||||
if (((( (xmb_system_tab > XMB_SYSTEM_TAB_SETTINGS && depth == 1)
|
||||
|| (xmb_system_tab < XMB_SYSTEM_TAB_SETTINGS && depth == 4))
|
||||
&& xmb->is_playlist))
|
||||
|| xmb->is_db_manager_list
|
||||
|| xmb->is_explore_list
|
||||
|| xmb->is_file_list
|
||||
@ -8403,8 +8383,6 @@ menu_ctx_driver_t menu_ctx_xmb = {
|
||||
NULL,
|
||||
xmb_update_thumbnail_image,
|
||||
xmb_refresh_thumbnail_image,
|
||||
xmb_set_thumbnail_system,
|
||||
xmb_get_thumbnail_system,
|
||||
xmb_set_thumbnail_content,
|
||||
gfx_display_osk_ptr_at_pos,
|
||||
xmb_update_savestate_thumbnail_path,
|
||||
|
@ -2181,7 +2181,6 @@ static int menu_displaylist_parse_playlist(
|
||||
strlcpy(label_spacer, PL_LABEL_SPACER_DEFAULT, sizeof(label_spacer));
|
||||
}
|
||||
|
||||
if (menu_st->driver_ctx && menu_st->driver_ctx->set_thumbnail_system)
|
||||
{
|
||||
/* Inform menu driver of current system name
|
||||
* > Note: history, favorites and images_history
|
||||
@ -2201,7 +2200,7 @@ static int menu_displaylist_parse_playlist(
|
||||
{
|
||||
char system_name[15];
|
||||
strlcpy(system_name, path_playlist, sizeof(system_name));
|
||||
menu_st->driver_ctx->set_thumbnail_system(
|
||||
menu_driver_set_thumbnail_system(
|
||||
menu_st->userdata, system_name, sizeof(system_name));
|
||||
}
|
||||
else if (!string_is_empty(info_path))
|
||||
@ -2209,7 +2208,7 @@ static int menu_displaylist_parse_playlist(
|
||||
char lpl_basename[256];
|
||||
fill_pathname_base(lpl_basename, info_path, sizeof(lpl_basename));
|
||||
path_remove_extension(lpl_basename);
|
||||
menu_st->driver_ctx->set_thumbnail_system(
|
||||
menu_driver_set_thumbnail_system(
|
||||
menu_st->userdata, lpl_basename, sizeof(lpl_basename));
|
||||
}
|
||||
}
|
||||
@ -2462,10 +2461,8 @@ static int menu_displaylist_parse_database_entry(menu_handle_t *menu,
|
||||
sizeof(path_base));
|
||||
path_remove_extension(path_base);
|
||||
|
||||
if ( menu_st->driver_ctx
|
||||
&& menu_st->driver_ctx->set_thumbnail_system)
|
||||
menu_st->driver_ctx->set_thumbnail_system(
|
||||
menu_st->userdata, path_base, sizeof(path_base));
|
||||
menu_driver_set_thumbnail_system(
|
||||
menu_st->userdata, path_base, sizeof(path_base));
|
||||
|
||||
strlcat(path_base, ".lpl", sizeof(path_base));
|
||||
|
||||
@ -3329,10 +3326,8 @@ static int menu_displaylist_parse_horizontal_list(
|
||||
* is loaded/cached */
|
||||
fill_pathname_base(lpl_basename, item->path, sizeof(lpl_basename));
|
||||
path_remove_extension(lpl_basename);
|
||||
if ( menu_st->driver_ctx
|
||||
&& menu_st->driver_ctx->set_thumbnail_system)
|
||||
menu_st->driver_ctx->set_thumbnail_system(
|
||||
menu_st->userdata, lpl_basename, sizeof(lpl_basename));
|
||||
menu_driver_set_thumbnail_system(
|
||||
menu_st->userdata, lpl_basename, sizeof(lpl_basename));
|
||||
}
|
||||
|
||||
if ((playlist = playlist_get_cached()))
|
||||
@ -3798,15 +3793,10 @@ static int menu_displaylist_parse_horizontal_content_actions(
|
||||
break;
|
||||
case PLAYLIST_ENTRY_REMOVE_ENABLE_HIST_FAV:
|
||||
{
|
||||
size_t sys_len;
|
||||
char sys_thumb[64];
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
sys_thumb[0] = '\0';
|
||||
|
||||
if ( menu_st->driver_ctx
|
||||
&& menu_st->driver_ctx->get_thumbnail_system)
|
||||
sys_len = menu_st->driver_ctx->get_thumbnail_system(
|
||||
menu_st->userdata, sys_thumb, sizeof(sys_thumb));
|
||||
size_t sys_len = menu_driver_get_thumbnail_system(
|
||||
menu_st->userdata, sys_thumb, sizeof(sys_thumb));
|
||||
|
||||
if (!string_is_empty(sys_thumb))
|
||||
remove_entry_enabled =
|
||||
@ -3876,21 +3866,17 @@ static int menu_displaylist_parse_horizontal_content_actions(
|
||||
|
||||
if (download_enabled)
|
||||
{
|
||||
size_t sys_len;
|
||||
char sys_thumb[64];
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
sys_thumb[0] = '\0';
|
||||
|
||||
struct menu_state *menu_st = menu_state_get_ptr();
|
||||
/* Only show 'Download Thumbnails' on supported playlists */
|
||||
download_enabled = false;
|
||||
if ( menu_st->driver_ctx
|
||||
&& menu_st->driver_ctx->get_thumbnail_system)
|
||||
sys_len = menu_st->driver_ctx->get_thumbnail_system(
|
||||
menu_st->userdata, sys_thumb, sizeof(sys_thumb));
|
||||
size_t sys_len = menu_driver_get_thumbnail_system(
|
||||
menu_st->userdata, sys_thumb, sizeof(sys_thumb));
|
||||
|
||||
if (!string_is_empty(sys_thumb))
|
||||
download_enabled = !string_ends_with_size(
|
||||
sys_thumb, "_history", sys_len, STRLEN_CONST("_history"));
|
||||
else
|
||||
download_enabled = false;
|
||||
}
|
||||
|
||||
if (settings->bools.network_on_demand_thumbnails)
|
||||
|
@ -289,8 +289,6 @@ static menu_ctx_driver_t menu_ctx_null = {
|
||||
NULL, /* update_thumbnail_path */
|
||||
NULL, /* update_thumbnail_image */
|
||||
NULL, /* refresh_thumbnail_image */
|
||||
NULL, /* set_thumbnail_system */
|
||||
NULL, /* get_thumbnail_system */
|
||||
NULL, /* set_thumbnail_content */
|
||||
NULL, /* osk_ptr_at_pos */
|
||||
NULL, /* update_savestate_thumbnail_path */
|
||||
@ -3700,6 +3698,10 @@ static bool rarch_menu_init(
|
||||
bool config_save_on_exit = settings->bools.config_save_on_exit;
|
||||
#endif
|
||||
|
||||
/* thumbnail initialization */
|
||||
if (!(menu_st->thumbnail_path_data = gfx_thumbnail_path_init()))
|
||||
return false;
|
||||
|
||||
/* Ensure that menu pointer input is correctly
|
||||
* initialised */
|
||||
memset(menu_input, 0, sizeof(menu_input_t));
|
||||
@ -6507,7 +6509,11 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data)
|
||||
menu_entries_settings_deinit(menu_st);
|
||||
if (menu_st->entries.list)
|
||||
menu_list_free(menu_st->driver_ctx, menu_st->entries.list);
|
||||
menu_st->entries.list = NULL;
|
||||
menu_st->entries.list = NULL;
|
||||
|
||||
if (menu_st->thumbnail_path_data)
|
||||
free(menu_st->thumbnail_path_data);
|
||||
menu_st->thumbnail_path_data = NULL;
|
||||
|
||||
if (menu_st->driver_data->core_buf)
|
||||
free(menu_st->driver_data->core_buf);
|
||||
@ -7905,3 +7911,19 @@ bool menu_is_nonrunning_quick_menu(void)
|
||||
|
||||
return string_is_equal(entry.label, "collection");
|
||||
}
|
||||
|
||||
void menu_driver_set_thumbnail_system(void *data, char *s, size_t len)
|
||||
{
|
||||
struct menu_state *menu_st = &menu_driver_state;
|
||||
gfx_thumbnail_set_system(
|
||||
menu_st->thumbnail_path_data, s, playlist_get_cached());
|
||||
}
|
||||
|
||||
size_t menu_driver_get_thumbnail_system(void *data, char *s, size_t len)
|
||||
{
|
||||
const char *system = NULL;
|
||||
struct menu_state *menu_st = &menu_driver_state;
|
||||
if (!gfx_thumbnail_get_system(menu_st->thumbnail_path_data, &system))
|
||||
return 0;
|
||||
return strlcpy(s, system, len);
|
||||
}
|
||||
|
@ -434,8 +434,6 @@ typedef struct menu_ctx_driver
|
||||
void (*update_thumbnail_path)(void *data, unsigned i, char pos);
|
||||
void (*update_thumbnail_image)(void *data);
|
||||
void (*refresh_thumbnail_image)(void *data, unsigned i);
|
||||
void (*set_thumbnail_system)(void *data, char* s, size_t len);
|
||||
size_t (*get_thumbnail_system)(void *data, char* s, size_t len);
|
||||
void (*set_thumbnail_content)(void *data, const char *s);
|
||||
int (*osk_ptr_at_pos)(void *data, int x, int y, unsigned width, unsigned height);
|
||||
void (*update_savestate_thumbnail_path)(void *data, unsigned i);
|
||||
@ -526,6 +524,7 @@ struct menu_state
|
||||
|
||||
struct menu_bind_state input_binds; /* uint64_t alignment */
|
||||
|
||||
gfx_thumbnail_path_data_t *thumbnail_path_data;
|
||||
menu_handle_t *driver_data;
|
||||
void *userdata;
|
||||
const menu_ctx_driver_t *driver_ctx;
|
||||
@ -792,6 +791,10 @@ bool menu_is_nonrunning_quick_menu(void);
|
||||
bool menu_input_key_bind_set_mode(
|
||||
enum menu_input_binds_ctl_state state, void *data);
|
||||
|
||||
void menu_driver_set_thumbnail_system(void *data, char *s, size_t len);
|
||||
|
||||
size_t menu_driver_get_thumbnail_system(void *data, char *s, size_t len);
|
||||
|
||||
extern const menu_ctx_driver_t *menu_ctx_drivers[];
|
||||
|
||||
extern menu_ctx_driver_t menu_ctx_ozone;
|
||||
|
Loading…
x
Reference in New Issue
Block a user