Hide 'Take Screenshot' for video drivers that don't support

taking screenshots yet
This commit is contained in:
twinaphex 2019-05-05 13:46:26 +02:00
parent 8094e02823
commit a0b2d97ca3
17 changed files with 98 additions and 15 deletions

View File

@ -1215,8 +1215,17 @@ static void ctr_set_osd_msg(void *data,
font_driver_render_msg(video_info, font, msg, params);
}
static uint32_t ctr_get_flags(void *data)
{
uint32_t flags = 0;
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}
static const video_poke_interface_t ctr_poke_interface = {
NULL, /* get_flags */
ctr_get_flags,
ctr_load_texture,
ctr_unload_texture,
NULL,

View File

@ -2045,6 +2045,7 @@ static uint32_t d3d9_get_flags(void *data)
BIT32_SET(flags, GFX_CTX_FLAGS_BLACK_FRAME_INSERTION);
BIT32_SET(flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING);
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}

View File

@ -629,8 +629,15 @@ static void gdi_unload_texture(void *data, uintptr_t handle)
free(texture);
}
static uint32_t gdi_get_flags(void *data)
{
uint32_t flags = 0;
return flags;
}
static const video_poke_interface_t gdi_poke_interface = {
NULL, /* get_flags */
gdi_get_flags,
gdi_load_texture,
gdi_unload_texture,
gdi_set_video_mode,

View File

@ -4161,6 +4161,7 @@ static uint32_t gl2_get_flags(void *data)
BIT32_SET(flags, GFX_CTX_FLAGS_HARD_SYNC);
BIT32_SET(flags, GFX_CTX_FLAGS_BLACK_FRAME_INSERTION);
BIT32_SET(flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING);
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}

View File

@ -1730,6 +1730,7 @@ static uint32_t gl_core_get_flags(void *data)
BIT32_SET(flags, GFX_CTX_FLAGS_BLACK_FRAME_INSERTION);
BIT32_SET(flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING);
BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG);
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}

View File

@ -1714,6 +1714,7 @@ static uint32_t wiiu_gfx_get_flags(void *data)
uint32_t flags = 0;
BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG);
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}

View File

@ -1263,8 +1263,17 @@ static void gx_get_video_output_next(void *data)
global->console.screen.resolutions.current.id++;
}
static uint32_t gx_get_flags(void *data)
{
uint32_t flags = 0;
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}
static const video_poke_interface_t gx_poke_interface = {
NULL, /* get_flags */
gx_get_flags,
NULL,
NULL,
gx_set_video_mode,

View File

@ -322,6 +322,7 @@ static uint32_t metal_get_flags(void *data)
#if defined(HAVE_SLANG) && defined(HAVE_SPIRV_CROSS)
BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG);
#endif
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}

View File

@ -830,8 +830,17 @@ static void psp_viewport_info(void *data, struct video_viewport *vp)
*vp = psp->vp;
}
static uint32_t psp_get_flags(void *data)
{
uint32_t flags = 0;
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}
static const video_poke_interface_t psp_poke_interface = {
NULL, /* get_flags */
psp_get_flags,
NULL,
NULL,
NULL,

View File

@ -724,8 +724,15 @@ static void sdl2_grab_mouse_toggle(void *data)
SDL_SetWindowGrab(vid->window, SDL_GetWindowGrab(vid->window));
}
static uint32_t sdl2_get_flags(void *data)
{
uint32_t flags = 0;
return flags;
}
static video_poke_interface_t sdl2_video_poke_interface = {
NULL, /* get_flags */
sdl2_get_flags,
NULL,
NULL,
NULL,

View File

@ -516,8 +516,17 @@ static void sdl_grab_mouse_toggle(void *data)
SDL_WM_GrabInput(mode == SDL_GRAB_ON ? SDL_GRAB_OFF : SDL_GRAB_ON);
}
static uint32_t sdl_get_flags(void *data)
{
uint32_t flags = 0;
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}
static const video_poke_interface_t sdl_poke_interface = {
NULL, /* get_flags */
sdl_get_flags,
NULL,
NULL,
NULL,

View File

@ -389,8 +389,15 @@ static void vga_set_osd_msg(void *data,
font_driver_render_msg(video_info, font, msg, params);
}
static uint32_t vga_get_flags(void *data)
{
uint32_t flags = 0;
return flags;
}
static const video_poke_interface_t vga_poke_interface = {
NULL, /* get_flags */
vga_gfx_get_flags,
NULL,
NULL,
NULL,

View File

@ -788,8 +788,17 @@ static bool vita_get_current_sw_framebuffer(void *data,
return true;
}
static uint32_t vita_get_flags(void *data)
{
uint32_t flags = 0;
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}
static const video_poke_interface_t vita_poke_interface = {
NULL, /* get_flags */
vita_get_flags,
vita_load_texture,
vita_unload_texture,
NULL,

View File

@ -2401,6 +2401,7 @@ static uint32_t vulkan_get_flags(void *data)
BIT32_SET(flags, GFX_CTX_FLAGS_BLACK_FRAME_INSERTION);
BIT32_SET(flags, GFX_CTX_FLAGS_MENU_FRAME_FILTERING);
BIT32_SET(flags, GFX_CTX_FLAGS_SHADERS_SLANG);
BIT32_SET(flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED);
return flags;
}

View File

@ -934,8 +934,15 @@ static bool xv_read_viewport(void *data, uint8_t *buffer, bool is_idle)
return true;
}
static uint32_t xv_get_flags(void *data)
{
uint32_t flags = 0;
return flags;
}
static video_poke_interface_t xv_video_poke_interface = {
NULL, /* get_flags */
xv_get_flags,
NULL,
NULL,
NULL,

View File

@ -125,7 +125,8 @@ enum display_flags
GFX_CTX_FLAGS_SHADERS_GLSL,
GFX_CTX_FLAGS_SHADERS_CG,
GFX_CTX_FLAGS_SHADERS_HLSL,
GFX_CTX_FLAGS_SHADERS_SLANG
GFX_CTX_FLAGS_SHADERS_SLANG,
GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED
};
enum shader_uniform_type

View File

@ -1801,11 +1801,14 @@ static int menu_displaylist_parse_load_content_settings(
if (settings->bools.quick_menu_show_take_screenshot)
{
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT),
msg_hash_to_str(MENU_ENUM_LABEL_TAKE_SCREENSHOT),
MENU_ENUM_LABEL_TAKE_SCREENSHOT,
MENU_SETTING_ACTION_SCREENSHOT, 0, 0);
gfx_ctx_flags_t flags;
if (video_driver_get_all_flags(&flags, GFX_CTX_FLAGS_SCREENSHOTS_SUPPORTED))
menu_entries_append_enum(info->list,
msg_hash_to_str(MENU_ENUM_LABEL_VALUE_TAKE_SCREENSHOT),
msg_hash_to_str(MENU_ENUM_LABEL_TAKE_SCREENSHOT),
MENU_ENUM_LABEL_TAKE_SCREENSHOT,
MENU_SETTING_ACTION_SCREENSHOT, 0, 0);
}
if (settings->bools.quick_menu_show_save_load_state