From 7150ea5df2c4982da90b11915d6a6104d7f0a9d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Thu, 28 Apr 2016 03:26:09 +0700 Subject: [PATCH] (XMB) Finalize the thumbnail type switching on keypress --- menu/cbs/menu_cbs_scan.c | 3 +++ menu/drivers/nuklear.c | 2 ++ menu/drivers/null.c | 2 ++ menu/drivers/rgui.c | 2 ++ menu/drivers/xmb.c | 14 ++++++++++++-- menu/drivers/xui.cpp | 2 ++ menu/drivers/zarch.c | 2 ++ menu/menu_driver.c | 18 ++++++++++++++++++ menu/menu_driver.h | 6 +++++- 9 files changed, 48 insertions(+), 3 deletions(-) diff --git a/menu/cbs/menu_cbs_scan.c b/menu/cbs/menu_cbs_scan.c index 09310e6065..31c6715e98 100644 --- a/menu/cbs/menu_cbs_scan.c +++ b/menu/cbs/menu_cbs_scan.c @@ -97,6 +97,9 @@ int action_switch_thumbnail(const char *path, if (settings->menu.thumbnails > 3) settings->menu.thumbnails = 0; + menu_driver_ctl(RARCH_MENU_CTL_UPDATE_THUMBNAIL_PATH, NULL); + menu_driver_ctl(RARCH_MENU_CTL_UPDATE_THUMBNAIL_IMAGE, NULL); + return 0; } diff --git a/menu/drivers/nuklear.c b/menu/drivers/nuklear.c index dc487594d1..faa8742433 100644 --- a/menu/drivers/nuklear.c +++ b/menu/drivers/nuklear.c @@ -493,4 +493,6 @@ menu_ctx_driver_t menu_ctx_nuklear = { "nuklear", nk_menu_environ, NULL, + NULL, + NULL }; diff --git a/menu/drivers/null.c b/menu/drivers/null.c index b08548b6c0..921bb12f50 100644 --- a/menu/drivers/null.c +++ b/menu/drivers/null.c @@ -60,4 +60,6 @@ menu_ctx_driver_t menu_ctx_null = { "null", NULL, NULL, + NULL, /* update_thumbnail_path */ + NULL, /* update_thumbnail_image */ }; diff --git a/menu/drivers/rgui.c b/menu/drivers/rgui.c index af61143d14..f9f0ee3616 100644 --- a/menu/drivers/rgui.c +++ b/menu/drivers/rgui.c @@ -915,4 +915,6 @@ menu_ctx_driver_t menu_ctx_rgui = { "rgui", rgui_environ, rgui_pointer_tap, + NULL, + NULL }; diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index 648d1dfa35..e8e8ff893d 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -664,8 +664,12 @@ end: string_list_free(list); } -static void xmb_update_thumbnail_path(xmb_handle_t *xmb, unsigned i) +static void xmb_update_thumbnail_path(void *data, unsigned i) { + xmb_handle_t *xmb = (xmb_handle_t*)data; + if (!xmb) + return; + menu_entry_t entry; settings_t *settings = config_get_ptr(); char *tmp = NULL; @@ -704,8 +708,12 @@ static void menu_display_handle_thumbnail_upload(void *task_data, free(img); } -static void xmb_update_thumbnail_image(xmb_handle_t *xmb) +static void xmb_update_thumbnail_image(void *data) { + xmb_handle_t *xmb = (xmb_handle_t*)data; + if (!xmb) + return; + if (path_file_exists(xmb->thumbnail_file_path)) rarch_task_push_image_load(xmb->thumbnail_file_path, "cb_menu_thumbnail", menu_display_handle_thumbnail_upload, NULL); @@ -3214,4 +3222,6 @@ menu_ctx_driver_t menu_ctx_xmb = { "xmb", xmb_environ, xmb_pointer_tap, + xmb_update_thumbnail_path, + xmb_update_thumbnail_image, }; diff --git a/menu/drivers/xui.cpp b/menu/drivers/xui.cpp index a8f8f1f922..b06efdefc9 100644 --- a/menu/drivers/xui.cpp +++ b/menu/drivers/xui.cpp @@ -723,4 +723,6 @@ menu_ctx_driver_t menu_ctx_xui = { "xui", xui_environ, NULL, + NULL, + NULL }; diff --git a/menu/drivers/zarch.c b/menu/drivers/zarch.c index 6e356a03e7..ceabfeb6b3 100644 --- a/menu/drivers/zarch.c +++ b/menu/drivers/zarch.c @@ -1203,4 +1203,6 @@ menu_ctx_driver_t menu_ctx_zarch = { "zarch", NULL, NULL, + NULL, + NULL }; diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 1531a78e7f..436049ed13 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -926,6 +926,24 @@ bool menu_driver_ctl(enum rarch_menu_ctl_state state, void *data) bind->menu_label_hash); } break; + case RARCH_MENU_CTL_UPDATE_THUMBNAIL_PATH: + { + size_t selection; + if (!menu_navigation_ctl(MENU_NAVIGATION_CTL_GET_SELECTION, &selection)) + return false; + + if (!menu_driver_ctx || !menu_driver_ctx->update_thumbnail_path) + return false; + menu_driver_ctx->update_thumbnail_path(menu_userdata, selection); + } + break; + case RARCH_MENU_CTL_UPDATE_THUMBNAIL_IMAGE: + { + if (!menu_driver_ctx || !menu_driver_ctx->update_thumbnail_image) + return false; + menu_driver_ctx->update_thumbnail_image(menu_userdata); + } + break; default: case RARCH_MENU_CTL_NONE: break; diff --git a/menu/menu_driver.h b/menu/menu_driver.h index 889bff607a..ee5249156b 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -167,7 +167,9 @@ enum rarch_menu_ctl_state RARCH_MENU_CTL_ENVIRONMENT, RARCH_MENU_CTL_DRIVER_DATA_GET, RARCH_MENU_CTL_POINTER_TAP, - RARCH_MENU_CTL_BIND_INIT + RARCH_MENU_CTL_BIND_INIT, + RARCH_MENU_CTL_UPDATE_THUMBNAIL_PATH, + RARCH_MENU_CTL_UPDATE_THUMBNAIL_IMAGE }; enum menu_file_type @@ -347,6 +349,8 @@ typedef struct menu_ctx_driver int (*pointer_tap)(void *data, unsigned x, unsigned y, unsigned ptr, menu_file_list_cbs_t *cbs, menu_entry_t *entry, unsigned action); + void (*update_thumbnail_path)(void *data, unsigned i); + void (*update_thumbnail_image)(void *data); } menu_ctx_driver_t; typedef struct menu_ctx_load_image