diff --git a/menu/drivers/materialui.c b/menu/drivers/materialui.c index 3e302b163c..5577605570 100644 --- a/menu/drivers/materialui.c +++ b/menu/drivers/materialui.c @@ -2505,11 +2505,15 @@ static void materialui_render(void *data, menu_thumbnail_process_streams( mui->thumbnail_path_data, mui->playlist, i, &node->thumbnails.primary, &node->thumbnails.secondary, - on_screen); + on_screen, + settings->uints.menu_thumbnail_upscale_threshold, + settings->bools.network_on_demand_thumbnails); else menu_thumbnail_process_stream( mui->thumbnail_path_data, MENU_THUMBNAIL_RIGHT, - mui->playlist, i, &node->thumbnails.primary, on_screen); + mui->playlist, i, &node->thumbnails.primary, on_screen, + settings->uints.menu_thumbnail_upscale_threshold, + settings->bools.network_on_demand_thumbnails); } else if (last_entry_found) break; diff --git a/menu/drivers/ozone/ozone.c b/menu/drivers/ozone/ozone.c index 98c377b273..f96621921d 100644 --- a/menu/drivers/ozone/ozone.c +++ b/menu/drivers/ozone/ozone.c @@ -379,6 +379,7 @@ static void ozone_update_thumbnail_image(void *data) { ozone_handle_t *ozone = (ozone_handle_t*)data; size_t selection = menu_navigation_get_selection(); + settings_t *settings = config_get_ptr(); playlist_t *playlist = playlist_get_cached(); if (!ozone) @@ -396,7 +397,10 @@ static void ozone_update_thumbnail_image(void *data) MENU_THUMBNAIL_RIGHT, playlist, selection, - &ozone->thumbnails.right); + &ozone->thumbnails.right, + settings->uints.menu_thumbnail_upscale_threshold, + settings->bools. network_on_demand_thumbnails + ); /* Left thumbnail is simply reset */ menu_thumbnail_reset(&ozone->thumbnails.left); @@ -409,7 +413,9 @@ static void ozone_update_thumbnail_image(void *data) MENU_THUMBNAIL_RIGHT, playlist, selection, - &ozone->thumbnails.right); + &ozone->thumbnails.right, + settings->uints.menu_thumbnail_upscale_threshold, + settings->bools. network_on_demand_thumbnails); /* Left thumbnail */ menu_thumbnail_request( @@ -417,7 +423,9 @@ static void ozone_update_thumbnail_image(void *data) MENU_THUMBNAIL_LEFT, playlist, selection, - &ozone->thumbnails.left); + &ozone->thumbnails.left, + settings->uints.menu_thumbnail_upscale_threshold, + settings->bools. network_on_demand_thumbnails); } } diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index bd8fc513ae..f1891bbc33 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -962,10 +962,11 @@ static void xmb_update_savestate_thumbnail_path(void *data, unsigned i) static void xmb_update_thumbnail_image(void *data) { + const char *core_name = NULL; xmb_handle_t *xmb = (xmb_handle_t*)data; size_t selection = menu_navigation_get_selection(); playlist_t *playlist = playlist_get_cached(); - const char *core_name = NULL; + settings_t *settings = config_get_ptr(); if (!xmb) return; @@ -986,7 +987,9 @@ static void xmb_update_thumbnail_image(void *data) MENU_THUMBNAIL_RIGHT, playlist, selection, - &xmb->thumbnails.right); + &xmb->thumbnails.right, + settings->uints.menu_thumbnail_upscale_threshold, + settings->bools.network_on_demand_thumbnails); /* Left thumbnail */ else if (menu_thumbnail_is_enabled(xmb->thumbnail_path_data, MENU_THUMBNAIL_LEFT)) menu_thumbnail_request( @@ -994,7 +997,9 @@ static void xmb_update_thumbnail_image(void *data) MENU_THUMBNAIL_LEFT, playlist, selection, - &xmb->thumbnails.left); + &xmb->thumbnails.left, + settings->uints.menu_thumbnail_upscale_threshold, + settings->bools.network_on_demand_thumbnails); } else { @@ -1004,7 +1009,9 @@ static void xmb_update_thumbnail_image(void *data) MENU_THUMBNAIL_RIGHT, playlist, selection, - &xmb->thumbnails.right); + &xmb->thumbnails.right, + settings->uints.menu_thumbnail_upscale_threshold, + settings->bools.network_on_demand_thumbnails); /* Left thumbnail */ menu_thumbnail_request( @@ -1012,7 +1019,9 @@ static void xmb_update_thumbnail_image(void *data) MENU_THUMBNAIL_LEFT, playlist, selection, - &xmb->thumbnails.left); + &xmb->thumbnails.left, + settings->uints.menu_thumbnail_upscale_threshold, + settings->bools.network_on_demand_thumbnails); } } @@ -1165,7 +1174,8 @@ static void xmb_set_thumbnail_content(void *data, const char *s) static void xmb_update_savestate_thumbnail_image(void *data) { - xmb_handle_t *xmb = (xmb_handle_t*)data; + xmb_handle_t *xmb = (xmb_handle_t*)data; + settings_t *settings = config_get_ptr(); if (!xmb) return; @@ -1186,7 +1196,8 @@ static void xmb_update_savestate_thumbnail_image(void *data) !string_is_equal(xmb->savestate_thumbnail_file_path, xmb->prev_savestate_thumbnail_file_path)) menu_thumbnail_request_file( xmb->savestate_thumbnail_file_path, - &xmb->thumbnails.savestate); + &xmb->thumbnails.savestate, + settings->uints.menu_thumbnail_upscale_threshold); } } diff --git a/menu/menu_thumbnail.c b/menu/menu_thumbnail.c index c6052e4b75..60268be912 100644 --- a/menu/menu_thumbnail.c +++ b/menu/menu_thumbnail.c @@ -29,14 +29,14 @@ #include #include -#include "../retroarch.h" -#include "../configuration.h" -#include "../tasks/tasks_internal.h" #include "menu_animation.h" #include "menu_driver.h" #include "menu_thumbnail.h" +#include "../retroarch.h" +#include "../tasks/tasks_internal.h" + /* When streaming thumbnails, to minimise the processing * of unnecessary images (i.e. when scrolling rapidly through * playlists), we delay loading until an entry has been on screen @@ -212,13 +212,15 @@ void menu_thumbnail_cancel_pending_requests(void) * (an annoyance...) */ void menu_thumbnail_request( menu_thumbnail_path_data_t *path_data, enum menu_thumbnail_id thumbnail_id, - playlist_t *playlist, size_t idx, menu_thumbnail_t *thumbnail) + playlist_t *playlist, size_t idx, menu_thumbnail_t *thumbnail, + unsigned menu_thumbnail_upscale_threshold, + bool network_on_demand_thumbnails + ) { - settings_t *settings = config_get_ptr(); const char *thumbnail_path = NULL; bool has_thumbnail = false; - if (!path_data || !thumbnail || !settings) + if (!path_data || !thumbnail) return; /* Reset thumbnail, then set 'missing' status by default @@ -250,13 +252,13 @@ void menu_thumbnail_request( * here, but can't see how to do it... */ if(task_push_image_load( thumbnail_path, video_driver_supports_rgba(), - settings->uints.menu_thumbnail_upscale_threshold, + menu_thumbnail_upscale_threshold, menu_thumbnail_handle_upload, thumbnail_tag)) thumbnail->status = MENU_THUMBNAIL_STATUS_PENDING; } #ifdef HAVE_NETWORKING /* Handle on demand thumbnail downloads */ - else if (settings->bools.network_on_demand_thumbnails) + else if (network_on_demand_thumbnails) { const char *system = NULL; const char *img_name = NULL; @@ -308,12 +310,13 @@ void menu_thumbnail_request( * 'thumbnail' will be populated with texture info/metadata * once the image load is complete */ void menu_thumbnail_request_file( - const char *file_path, menu_thumbnail_t *thumbnail) + const char *file_path, menu_thumbnail_t *thumbnail, + unsigned menu_thumbnail_upscale_threshold + ) { - settings_t *settings = config_get_ptr(); menu_thumbnail_tag_t *thumbnail_tag = NULL; - if (!thumbnail || !settings) + if (!thumbnail) return; /* Reset thumbnail, then set 'missing' status by default @@ -342,7 +345,7 @@ void menu_thumbnail_request_file( * here, but can't see how to do it... */ if(task_push_image_load( file_path, video_driver_supports_rgba(), - settings->uints.menu_thumbnail_upscale_threshold, + menu_thumbnail_upscale_threshold, menu_thumbnail_handle_upload, thumbnail_tag)) thumbnail->status = MENU_THUMBNAIL_STATUS_PENDING; } @@ -390,7 +393,10 @@ void menu_thumbnail_reset(menu_thumbnail_t *thumbnail) * performance */ void menu_thumbnail_process_stream( menu_thumbnail_path_data_t *path_data, enum menu_thumbnail_id thumbnail_id, - playlist_t *playlist, size_t idx, menu_thumbnail_t *thumbnail, bool on_screen) + playlist_t *playlist, size_t idx, menu_thumbnail_t *thumbnail, bool on_screen, + unsigned menu_thumbnail_upscale_threshold, + bool network_on_demand_thumbnails + ) { if (!thumbnail) return; @@ -423,7 +429,10 @@ void menu_thumbnail_process_stream( /* Request image load */ menu_thumbnail_request( - path_data, thumbnail_id, playlist, idx, thumbnail); + path_data, thumbnail_id, playlist, idx, thumbnail, + menu_thumbnail_upscale_threshold, + network_on_demand_thumbnails + ); } } } @@ -457,7 +466,10 @@ void menu_thumbnail_process_streams( menu_thumbnail_path_data_t *path_data, playlist_t *playlist, size_t idx, menu_thumbnail_t *right_thumbnail, menu_thumbnail_t *left_thumbnail, - bool on_screen) + bool on_screen, + unsigned menu_thumbnail_upscale_threshold, + bool network_on_demand_thumbnails + ) { if (!right_thumbnail || !left_thumbnail) return; @@ -521,11 +533,15 @@ void menu_thumbnail_process_streams( /* Request image load */ if (request_right) menu_thumbnail_request( - path_data, MENU_THUMBNAIL_RIGHT, playlist, idx, right_thumbnail); + path_data, MENU_THUMBNAIL_RIGHT, playlist, idx, right_thumbnail, + menu_thumbnail_upscale_threshold, + network_on_demand_thumbnails); if (request_left) menu_thumbnail_request( - path_data, MENU_THUMBNAIL_LEFT, playlist, idx, left_thumbnail); + path_data, MENU_THUMBNAIL_LEFT, playlist, idx, left_thumbnail, + menu_thumbnail_upscale_threshold, + network_on_demand_thumbnails); } } } diff --git a/menu/menu_thumbnail.h b/menu/menu_thumbnail.h index f9249fad01..d6cb33e18e 100644 --- a/menu/menu_thumbnail.h +++ b/menu/menu_thumbnail.h @@ -134,7 +134,10 @@ void menu_thumbnail_cancel_pending_requests(void); * (an annoyance...) */ void menu_thumbnail_request( menu_thumbnail_path_data_t *path_data, enum menu_thumbnail_id thumbnail_id, - playlist_t *playlist, size_t idx, menu_thumbnail_t *thumbnail); + playlist_t *playlist, size_t idx, menu_thumbnail_t *thumbnail, + unsigned menu_thumbnail_upscale_threshold, + bool network_on_demand_thumbnails + ); /* Requests loading of a specific thumbnail image file * (may be used, for example, to load savestate images) @@ -145,7 +148,8 @@ void menu_thumbnail_request( * 'thumbnail' will be populated with texture info/metadata * once the image load is complete */ void menu_thumbnail_request_file( - const char *file_path, menu_thumbnail_t *thumbnail); + const char *file_path, menu_thumbnail_t *thumbnail, + unsigned menu_thumbnail_upscale_threshold); /* Resets (and free()s the current texture of) the * specified thumbnail */ @@ -167,7 +171,10 @@ void menu_thumbnail_reset(menu_thumbnail_t *thumbnail); * performance */ void menu_thumbnail_process_stream( menu_thumbnail_path_data_t *path_data, enum menu_thumbnail_id thumbnail_id, - playlist_t *playlist, size_t idx, menu_thumbnail_t *thumbnail, bool on_screen); + playlist_t *playlist, size_t idx, menu_thumbnail_t *thumbnail, bool on_screen, + unsigned menu_thumbnail_upscale_threshold, + bool network_on_demand_thumbnails + ); /* Handles streaming of the specified thumbnails as they move * on/off screen @@ -185,7 +192,10 @@ void menu_thumbnail_process_streams( menu_thumbnail_path_data_t *path_data, playlist_t *playlist, size_t idx, menu_thumbnail_t *right_thumbnail, menu_thumbnail_t *left_thumbnail, - bool on_screen); + bool on_screen, + unsigned menu_thumbnail_upscale_threshold, + bool network_on_demand_thumbnails + ); /* Thumbnail rendering */