From d0a75a34412aaf56a80fd9d758df31a8acb4363c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Thu, 29 Jan 2015 23:42:41 +0100 Subject: [PATCH 1/5] (XMB) Fix duplicate icon after messagebox --- menu/menu_entries_cbs.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/menu/menu_entries_cbs.c b/menu/menu_entries_cbs.c index 84e7af68c4..14e03f2b2c 100644 --- a/menu/menu_entries_cbs.c +++ b/menu/menu_entries_cbs.c @@ -3501,7 +3501,7 @@ static int action_iterate_help(const char *label, unsigned action) driver.menu_ctx->render_messagebox(msg); if (action == MENU_ACTION_OK) - menu_list_pop_stack(driver.menu->menu_list); + menu_list_pop(driver.menu->menu_list->menu_stack, &driver.menu->selection_ptr); return 0; } @@ -3554,7 +3554,7 @@ static int action_iterate_info(const char *label, unsigned action) } if (action == MENU_ACTION_OK) - menu_list_pop_stack(driver.menu->menu_list); + menu_list_pop(driver.menu->menu_list->menu_stack, &driver.menu->selection_ptr); return 0; } From bba772fd4c2d624fbc900d53e4dc7abe83a8d261 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Thu, 29 Jan 2015 23:58:06 +0100 Subject: [PATCH 2/5] (XMB) Reset selection_ptr on horizontal switches, prevents a segfault --- menu/menu_entries_cbs.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/menu/menu_entries_cbs.c b/menu/menu_entries_cbs.c index 14e03f2b2c..c87837667f 100644 --- a/menu/menu_entries_cbs.c +++ b/menu/menu_entries_cbs.c @@ -1842,6 +1842,7 @@ static int action_toggle_mainmenu(unsigned type, const char *label, { if (!strcmp(driver.menu_ctx->ident, "xmb")) { + driver.menu->selection_ptr = 0; switch (action) { case MENU_ACTION_LEFT: @@ -4322,7 +4323,9 @@ static void menu_entries_cbs_init_bind_toggle(menu_file_list_cbs_t *cbs, case MENU_FILE_USE_DIRECTORY: case MENU_FILE_PLAYLIST_ENTRY: case MENU_FILE_DOWNLOAD_CORE: - if (!strcmp(menu_label, "Horizontal Menu")) + case MENU_SETTING_GROUP: + if (!strcmp(menu_label, "Horizontal Menu") + || !strcmp(menu_label, "Main Menu")) cbs->action_toggle = action_toggle_mainmenu; else cbs->action_toggle = action_toggle_scroll; From 85e29125dee1380260c737907cd6267c16782182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Fri, 30 Jan 2015 01:19:56 +0100 Subject: [PATCH 3/5] (XMB) Prevent selection_prt to be reseted after messagebox --- menu/menu_entries_cbs.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/menu/menu_entries_cbs.c b/menu/menu_entries_cbs.c index c87837667f..d182feac58 100644 --- a/menu/menu_entries_cbs.c +++ b/menu/menu_entries_cbs.c @@ -3502,7 +3502,7 @@ static int action_iterate_help(const char *label, unsigned action) driver.menu_ctx->render_messagebox(msg); if (action == MENU_ACTION_OK) - menu_list_pop(driver.menu->menu_list->menu_stack, &driver.menu->selection_ptr); + menu_list_pop(driver.menu->menu_list->menu_stack, NULL); return 0; } From 3d3370b7253e7dfd6ee6a4c6e629e35dc002b674 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Fri, 30 Jan 2015 04:41:08 +0100 Subject: [PATCH 4/5] (XMB) Fix a segfault during menu toggle --- settings_data.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/settings_data.c b/settings_data.c index c7cadff9e3..15a012f330 100644 --- a/settings_data.c +++ b/settings_data.c @@ -2902,7 +2902,7 @@ void setting_data_get_label(void *data, char *type_str, size_t type_str_size, unsigned *w, unsigned type, const char *menu_label, const char *label, unsigned idx) { - file_list_t *list = (file_list_t*)data; + file_list_t *list = (file_list_t*)data; rarch_setting_t *setting_data = NULL; rarch_setting_t *setting = NULL; @@ -2917,6 +2917,9 @@ void setting_data_get_label(void *data, char *type_str, label, idx)) == 0) return; + if (!label) + return; + #if defined(HAVE_CG) || defined(HAVE_HLSL) || defined(HAVE_GLSL) if ((!strcmp(menu_label, "Shader Options") || !strcmp(menu_label, "video_shader_parameters") || From 096d1b09f335b4b6ec6e7f5805d954c5487a7150 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Andr=C3=A9=20Santoni?= Date: Fri, 30 Jan 2015 04:45:15 +0100 Subject: [PATCH 5/5] (XMB) Fix two display bugs --- menu/drivers/xmb.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/menu/drivers/xmb.c b/menu/drivers/xmb.c index bfe620e278..5bce843e5d 100644 --- a/menu/drivers/xmb.c +++ b/menu/drivers/xmb.c @@ -1389,7 +1389,8 @@ static void xmb_context_reset(void *data) strlcat(content_texturepath, core_id, sizeof(content_texturepath)); strlcat(content_texturepath, "-content.png", sizeof(content_texturepath)); - node->alpha = (i == xmb->active_category) ? xmb->c_active_alpha : xmb->c_passive_alpha; + node->alpha = (i == xmb->active_category) ? xmb->c_active_alpha + : (xmb->depth <= 1) ? xmb->c_passive_alpha : 0; node->zoom = (i == xmb->active_category) ? xmb->c_active_zoom : xmb->c_passive_zoom; node->icon = xmb_png_texture_load(texturepath); node->content_icon = xmb_png_texture_load(content_texturepath); @@ -1589,6 +1590,8 @@ static void xmb_toggle(bool menu_on) if (!xmb) return; + xmb->depth = file_list_get_size(driver.menu->menu_list->menu_stack); + if (menu_on) { add_tween(XMB_DELAY, 1.0f, &xmb->alpha, &inOutQuad, NULL); @@ -1604,6 +1607,8 @@ static void xmb_toggle(bool menu_on) node->alpha = (i == xmb->active_category) ? xmb->c_active_alpha : (xmb->depth <= 1) ? xmb->c_passive_alpha : 0; + node->zoom = (i == xmb->active_category) ? xmb->c_active_zoom + : xmb->c_passive_zoom; } } }