diff --git a/menu/menu_display.c b/menu/menu_display.c index 179fe3f9a3..37c4966641 100644 --- a/menu/menu_display.c +++ b/menu/menu_display.c @@ -476,6 +476,16 @@ void menu_display_draw(menu_display_ctx_draw_t *draw) menu_disp->draw(draw); } +bool menu_display_shader_pipeline_active(void) +{ + settings_t *settings = config_get_ptr(); + if (!string_is_equal(settings->menu.driver, "xmb")) + return false; + if (settings->menu.xmb.shader_pipeline == 2) + return false; + return true; +} + void menu_display_draw_pipeline(menu_display_ctx_draw_t *draw) { if (!menu_disp || !draw || !menu_disp->draw_pipeline) @@ -488,6 +498,7 @@ void menu_display_draw_bg(menu_display_ctx_draw_t *draw) static struct video_coords coords; const float *new_vertex = NULL; const float *new_tex_coord = NULL; + settings_t *settings = config_get_ptr(); if (!menu_disp || !draw) return; @@ -507,11 +518,8 @@ void menu_display_draw_bg(menu_display_ctx_draw_t *draw) draw->coords = &coords; - if (!menu_display_libretro_running()) - { - settings_t *settings = config_get_ptr(); + if (!menu_display_libretro_running() && !menu_display_shader_pipeline_active()) menu_display_set_alpha(draw->color, settings->menu.wallpaper.opacity); - } if (!draw->texture) draw->texture = menu_display_white_texture; diff --git a/menu/menu_display.h b/menu/menu_display.h index 87c2ce14b9..1ce7b882d1 100644 --- a/menu/menu_display.h +++ b/menu/menu_display.h @@ -201,6 +201,8 @@ void menu_display_draw_cursor( void menu_display_draw_text(const char *msg, int width, int height, struct font_params *params); +bool menu_display_shader_pipeline_active(void); + void menu_display_set_alpha(float *color, float alpha_value); bool menu_display_font(enum application_special_type type); diff --git a/menu/menu_displaylist.c b/menu/menu_displaylist.c index 16b13b961f..656c8f6714 100644 --- a/menu/menu_displaylist.c +++ b/menu/menu_displaylist.c @@ -3432,21 +3432,33 @@ static int menu_displaylist_parse_generic( break; case RARCH_PLAIN_FILE: default: - switch (hash_label) + if (type == DISPLAYLIST_CORES_DETECTED) { - case MENU_LABEL_DETECT_CORE_LIST: - case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: - if (path_is_compressed_file(str_list->elems[i].data)) - { - /* in case of deferred_core_list we have to interpret - * every archive as an archive to disallow instant loading - */ - file_type = FILE_TYPE_CARCHIVE; - break; - } - default: + /* in case of deferred_core_list we have to interpret + * every archive as an archive to disallow instant loading + */ + if (path_is_compressed_file(str_list->elems[i].data)) + file_type = FILE_TYPE_CARCHIVE; + else file_type = (enum msg_file_type)info->type_default; - break; + } + else + { + switch (hash_label) + { + case MENU_LABEL_DOWNLOADED_FILE_DETECT_CORE_LIST: + if (path_is_compressed_file(str_list->elems[i].data)) + { + /* in case of deferred_core_list we have to interpret + * every archive as an archive to disallow instant loading + */ + file_type = FILE_TYPE_CARCHIVE; + break; + } + default: + file_type = (enum msg_file_type)info->type_default; + break; + } } break; }