video_frame_info - start passing flags

This commit is contained in:
libretroadmin 2023-08-16 19:17:04 +02:00
parent 538aa5235c
commit bc41e0fdf4
43 changed files with 810 additions and 823 deletions

View File

@ -239,7 +239,7 @@ static bool caca_frame(void *data, const void *frame,
bool draw = true;
caca_t *caca = (caca_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (!frame || !frame_width || !frame_height)

View File

@ -1886,7 +1886,7 @@ static bool ctr_frame(void* data, const void* frame,
unsigned custom_vp_width = video_info->custom_vp_width;
unsigned custom_vp_height = video_info->custom_vp_height;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -2166,7 +2166,7 @@ static bool d3d10_gfx_frame(
*osd_params = (struct font_params*)
&video_info->osd_stat_params;
const char *stat_text = video_info->stat_text;
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
bool overlay_behind_menu = video_info->overlay_behind_menu;
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -2789,7 +2789,7 @@ static bool d3d11_gfx_frame(
unsigned video_height = video_info->height;
bool statistics_show = video_info->statistics_show;
struct font_params* osd_params = (struct font_params*)&video_info->osd_stat_params;
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
bool overlay_behind_menu = video_info->overlay_behind_menu;
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -3210,7 +3210,7 @@ static bool d3d12_gfx_frame(
unsigned video_height = video_info->height;
struct font_params *osd_params = (struct font_params*)
&video_info->osd_stat_params;
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
bool overlay_behind_menu = video_info->overlay_behind_menu;
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -1865,7 +1865,7 @@ static bool d3d8_frame(void *data, const void *frame,
bool statistics_show = video_info->statistics_show;
unsigned black_frame_insertion = video_info->black_frame_insertion;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (!frame)

View File

@ -2032,7 +2032,7 @@ static bool d3d9_cg_frame(void *data, const void *frame,
struct font_params *osd_params = (struct font_params*)
&video_info->osd_stat_params;
const char *stat_text = video_info->stat_text;
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
bool overlay_behind_menu = video_info->overlay_behind_menu;
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -1616,7 +1616,7 @@ static bool d3d9_hlsl_frame(void *data, const void *frame,
struct font_params *osd_params = (struct font_params*)
&video_info->osd_stat_params;
const char *stat_text = video_info->stat_text;
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
bool overlay_behind_menu = video_info->overlay_behind_menu;
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -438,14 +438,14 @@ static bool dispmanx_frame(void *data, const void *frame, unsigned width,
struct dispmanx_video *_dispvars = data;
float aspect = video_driver_get_aspect_ratio();
unsigned max_swapchain_images = video_info->max_swapchain_images;
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
if (!frame)
return true;
if ( (width != _dispvars->core_width) ||
(height != _dispvars->core_height) ||
(_dispvars->aspect_ratio != aspect))
if ( (width != _dispvars->core_width)
|| (height != _dispvars->core_height)
|| (_dispvars->aspect_ratio != aspect))
{
/* Sanity check. */
if (width == 0 || height == 0)

View File

@ -746,11 +746,11 @@ static bool drm_frame(void *data, const void *frame, unsigned width,
{
struct drm_video *_drmvars = data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if ( ( width != _drmvars->core_width) ||
(height != _drmvars->core_height))
if ( (width != _drmvars->core_width)
|| (height != _drmvars->core_height))
{
/* Sanity check. */
if (width == 0 || height == 0)
@ -770,7 +770,7 @@ static bool drm_frame(void *data, const void *frame, unsigned width,
pitch,
_drmvars->rgb32 ? 4 : 2,
_drmvars->rgb32 ? DRM_FORMAT_XRGB8888 : DRM_FORMAT_RGB565,
255,
255,
_drmvars->current_aspect,
3,
0,

View File

@ -1282,8 +1282,7 @@ static bool exynos_frame(void *data, const void *frame, unsigned width,
struct exynos_video *vid = data;
struct exynos_page *page = NULL;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
/* Check if neither menu nor core framebuffer is to be displayed. */
if (!vid->menu_active && !frame)
return true;

View File

@ -169,7 +169,7 @@ static bool fpga_frame(void *data, const void *frame,
fpga_t *fpga = (fpga_t*)data;
unsigned bits = fpga->video_bits;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (!frame || !frame_width || !frame_height)
@ -179,9 +179,9 @@ static bool fpga_frame(void *data, const void *frame,
menu_driver_frame(menu_is_alive, video_info);
#endif
if ( fpga->video_width != frame_width ||
fpga->video_height != frame_height ||
fpga->video_pitch != pitch)
if ( (fpga->video_width != frame_width)
|| (fpga->video_height != frame_height)
|| (fpga->video_pitch != pitch))
{
if (frame_width > 4 && frame_height > 4)
{

View File

@ -597,7 +597,7 @@ static bool gdi_frame(void *data, const void *frame,
unsigned bits = gdi->video_bits;
HWND hwnd = win32_get_window();
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
/* FIXME: Force these settings off as they interfere with the rendering */
@ -612,9 +612,9 @@ static bool gdi_frame(void *data, const void *frame,
menu_driver_frame(menu_is_alive, video_info);
#endif
if ( gdi->video_width != frame_width ||
gdi->video_height != frame_height ||
gdi->video_pitch != pitch)
if ( (gdi->video_width != frame_width)
|| (gdi->video_height != frame_height)
|| (gdi->video_pitch != pitch))
{
if (frame_width > 4 && frame_height > 4)
{

View File

@ -1500,7 +1500,7 @@ static bool gl1_frame(void *data, const void *frame,
unsigned video_width = video_info->width;
unsigned video_height = video_info->height;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -3440,7 +3440,7 @@ static bool gl2_frame(void *data, const void *frame,
&video_info->osd_stat_params;
const char *stat_text = video_info->stat_text;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -2519,7 +2519,7 @@ static bool gl3_frame(void *data, const void *frame,
bool runloop_is_slowmotion = video_info->runloop_is_slowmotion;
bool input_driver_nonblock_state = video_info->input_driver_nonblock_state;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -1880,7 +1880,7 @@ static bool gx2_frame(void *data, const void *frame,
uint32_t i;
wiiu_video_t *wiiu = (wiiu_video_t *) data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -1589,7 +1589,7 @@ static bool gx_frame(void *data, const void *frame,
bool video_smooth = settings->bools.video_smooth;
unsigned video_aspect_ratio_idx = settings->uints.video_aspect_ratio_idx;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
bool fps_show = video_info->fps_show;

View File

@ -1062,7 +1062,7 @@ font_renderer_t metal_raster_font = {
- (void)_drawMenu:(video_frame_info_t *)video_info
{
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
if (!_menu.enabled)
return;

View File

@ -171,7 +171,7 @@ static bool network_gfx_frame(void *data, const void *frame,
bool draw = true;
network_video_t *network = (network_video_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (!frame || !frame_width || !frame_height)

View File

@ -547,10 +547,13 @@ static bool oga_frame(void *data, const void *frame, unsigned width,
unsigned height, uint64_t frame_count,
unsigned pitch, const char *msg, video_frame_info_t *video_info)
{
oga_video_t *vid = (oga_video_t*)data;
oga_framebuf_t* page = vid->pages[vid->cur_page];
oga_video_t *vid = (oga_video_t*)data;
oga_framebuf_t* page = vid->pages[vid->cur_page];
oga_surface_t *page_surface = page->surface;
float aspect_ratio = video_driver_get_aspect_ratio();
float aspect_ratio = video_driver_get_aspect_ratio();
#ifdef HAVE_MENU
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (unlikely(!frame || width == 0 || height == 0))
return true;
@ -569,7 +572,22 @@ static bool oga_frame(void *data, const void *frame, unsigned width,
rga_clear_surface(page_surface, 0);
if (likely(!video_info->menu_is_alive))
#ifdef HAVE_MENU
if (menu_is_alive)
{
oga_rect_t r;
menu_driver_frame(true, video_info);
width = vid->menu_surface->width;
height = vid->menu_surface->height;
aspect_ratio = (float)width / height;
oga_calc_bounds(&r, vid->drm_width, vid->drm_height, width, height, aspect_ratio, vid->display_ar);
oga_blit(vid->menu_surface, 0, 0, width, height,
page_surface, r.y, r.x, r.h, r.w, HAL_TRANSFORM_ROT_270, vid->scale_mode, 0);
}
else
#endif
{
uint8_t* src = (uint8_t*)frame;
uint8_t* dst = (uint8_t*)vid->frame_surface->map;
@ -581,7 +599,8 @@ static bool oga_frame(void *data, const void *frame, unsigned width,
int dst_pitch = vid->frame_surface->pitch;
int yy = height;
while (yy > 0) {
while (yy > 0)
{
memcpy(dst, src, pitch);
src += pitch;
dst += dst_pitch;
@ -593,22 +612,6 @@ static bool oga_frame(void *data, const void *frame, unsigned width,
oga_blit(vid->frame_surface, 0, 0, width, height,
page_surface, r.y, r.x, r.h, r.w, vid->rotation, vid->scale_mode, blend);
}
#ifdef HAVE_MENU
else
{
menu_driver_frame(true, video_info);
width = vid->menu_surface->width;
height = vid->menu_surface->height;
aspect_ratio = (float)width / height;
oga_rect_t r;
oga_calc_bounds(&r, vid->drm_width, vid->drm_height, width, height, aspect_ratio, vid->display_ar);
oga_blit(vid->menu_surface, 0, 0, width, height,
page_surface, r.y, r.x, r.h, r.w, HAL_TRANSFORM_ROT_270, vid->scale_mode, 0);
}
#endif
if (msg)
{

View File

@ -979,7 +979,7 @@ static bool omap_frame(void *data, const void *frame, unsigned width,
{
omap_video_t *vid = (omap_video_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (!frame)

View File

@ -550,9 +550,9 @@ static bool psp_frame(void *data, const void *frame,
unsigned width, unsigned height, uint64_t frame_count,
unsigned pitch, const char *msg, video_frame_info_t *video_info)
{
psp1_video_t *psp = (psp1_video_t*)data;
psp1_video_t *psp = (psp1_video_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (!width || !height)

View File

@ -2163,7 +2163,7 @@ static bool rsx_frame(void* data, const void* frame,
bool statistics_show = video_info->statistics_show;
struct font_params *osd_params = (struct font_params*)
&video_info->osd_stat_params;
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -476,9 +476,9 @@ static bool sdl2_gfx_frame(void *data, const void *frame, unsigned width,
unsigned pitch, const char *msg, video_frame_info_t *video_info)
{
char title[128];
sdl2_video_t *vid = (sdl2_video_t*)data;
sdl2_video_t *vid = (sdl2_video_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (vid->flags & SDL2_FLAG_SHOULD_RESIZE)

View File

@ -422,9 +422,9 @@ static void *sdl_dingux_gfx_init(const video_info_t *video,
settings->uints.video_dingux_ipu_filter_type;
const char *input_drv_name = settings->arrays.input_driver;
const char *joypad_drv_name = settings->arrays.input_joypad_driver;
uint32_t surface_flags = (video->vsync) ?
(SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN) :
(SDL_HWSURFACE | SDL_FULLSCREEN);
uint32_t surface_flags = (video->vsync)
? (SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN)
: (SDL_HWSURFACE | SDL_FULLSCREEN);
/* Initialise graphics subsystem, if required */
if (sdl_subsystem_flags == 0)
@ -445,13 +445,15 @@ static void *sdl_dingux_gfx_init(const video_info_t *video,
dingux_ipu_set_downscaling_enable(true);
dingux_ipu_set_scaling_mode(ipu_keep_aspect, ipu_integer_scaling);
dingux_ipu_set_filter_type(ipu_filter_type);
vid->ff_frame_time_min = 16667;
#if defined(DINGUX_BETA)
/* Get current refresh rate */
refresh_rate_valid = dingux_get_video_refresh_rate(&current_refresh_rate);
refresh_rate_valid = dingux_get_video_refresh_rate(&current_refresh_rate);
/* Check if refresh rate needs to be updated */
if (!refresh_rate_valid ||
(current_refresh_rate != target_refresh_rate))
if ( !refresh_rate_valid
|| (current_refresh_rate != target_refresh_rate))
hw_refresh_rate = dingux_set_video_refresh_rate(target_refresh_rate);
else
{
@ -475,19 +477,9 @@ static void *sdl_dingux_gfx_init(const video_info_t *video,
}
vid->refresh_rate = target_refresh_rate;
switch (target_refresh_rate)
{
case DINGUX_REFRESH_RATE_50HZ:
vid->ff_frame_time_min = 20000;
break;
default:
vid->ff_frame_time_min = 16667;
break;
}
if (target_refresh_rate == DINGUX_REFRESH_RATE_50HZ)
vid->ff_frame_time_min = 20000;
driver_ctl(RARCH_DRIVER_CTL_SET_REFRESH_RATE, &hw_refresh_rate);
#else
vid->ff_frame_time_min = 16667;
#endif
vid->screen = SDL_SetVideoMode(
@ -524,8 +516,8 @@ static void *sdl_dingux_gfx_init(const video_info_t *video,
vid->osd_font = bitmapfont_get_lut();
if (!vid->osd_font ||
vid->osd_font->glyph_max <
if ( !vid->osd_font
|| vid->osd_font->glyph_max <
(SDL_DINGUX_NUM_FONT_GLYPHS - 1))
{
RARCH_ERR("[SDL1]: Failed to init OSD font\n");
@ -621,9 +613,9 @@ static void sdl_dingux_set_output(
{
unsigned sanitized_width;
unsigned sanitized_height;
uint32_t surface_flags = (vid->vsync) ?
(SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN) :
(SDL_HWSURFACE | SDL_FULLSCREEN);
uint32_t surface_flags = (vid->vsync)
? (SDL_HWSURFACE | SDL_TRIPLEBUF | SDL_FULLSCREEN)
: (SDL_HWSURFACE | SDL_FULLSCREEN);
/* Cache set parameters */
vid->frame_width = width;
@ -765,6 +757,9 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame,
unsigned pitch, const char *msg, video_frame_info_t *video_info)
{
sdl_dingux_video_t* vid = (sdl_dingux_video_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
/* Return early if:
* - Input sdl_dingux_video_t struct is NULL
@ -796,7 +791,7 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame,
}
#ifdef HAVE_MENU
menu_driver_frame(video_info->menu_is_alive, video_info);
menu_driver_frame(menu_is_alive, video_info);
#endif
if (likely(!vid->menu_active))
@ -804,9 +799,9 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame,
/* Update video mode if we were in the menu on
* the previous frame, or width/height have changed */
if (unlikely(
vid->was_in_menu ||
(vid->frame_width != width) ||
(vid->frame_height != height)))
vid->was_in_menu
|| (vid->frame_width != width)
|| (vid->frame_height != height)))
sdl_dingux_set_output(vid, width, height, vid->rgb32);
/* Must always lock SDL surface before
@ -878,11 +873,8 @@ static bool sdl_dingux_gfx_frame(void *data, const void *frame,
static void sdl_dingux_set_texture_enable(void *data, bool state, bool full_screen)
{
sdl_dingux_video_t *vid = (sdl_dingux_video_t*)data;
if (unlikely(!vid))
return;
vid->menu_active = state;
if (vid)
vid->menu_active = state;
}
static void sdl_dingux_set_texture_frame(void *data, const void *frame, bool rgb32,
@ -891,10 +883,10 @@ static void sdl_dingux_set_texture_frame(void *data, const void *frame, bool rgb
sdl_dingux_video_t *vid = (sdl_dingux_video_t*)data;
if (unlikely(
!vid ||
rgb32 ||
(width > SDL_DINGUX_MENU_WIDTH) ||
(height > SDL_DINGUX_MENU_HEIGHT)))
!vid
|| rgb32
|| (width > SDL_DINGUX_MENU_WIDTH)
|| (height > SDL_DINGUX_MENU_HEIGHT)))
return;
memcpy(vid->menu_texture, frame, width * height * sizeof(uint16_t));
@ -972,21 +964,13 @@ static bool sdl_dingux_gfx_alive(void *data)
return !vid->quitting;
}
static bool sdl_dingux_gfx_focus(void *data)
{
return true;
}
static bool sdl_dingux_gfx_focus(void *data) { return true; }
static bool sdl_dingux_gfx_has_windowed(void *data) { return false; }
static bool sdl_dingux_gfx_suppress_screensaver(void *data, bool enable)
{
return false;
}
static bool sdl_dingux_gfx_has_windowed(void *data)
{
return false;
}
static void sdl_dingux_gfx_viewport_info(void *data, struct video_viewport *vp)
{
sdl_dingux_video_t *vid = (sdl_dingux_video_t*)data;
@ -1050,15 +1034,15 @@ static void sdl_dingux_apply_state_changes(void *data)
return;
/* Update IPU scaling mode, if required */
if ((vid->keep_aspect != ipu_keep_aspect) ||
(vid->integer_scaling != ipu_integer_scaling))
if ( (vid->keep_aspect != ipu_keep_aspect)
|| (vid->integer_scaling != ipu_integer_scaling))
{
unsigned sanitized_width;
unsigned sanitized_height;
unsigned current_width = vid->frame_width;
unsigned current_height = vid->frame_height;
unsigned screen_width = vid->screen->w;
unsigned screen_height = vid->screen->h;
unsigned sanitized_width;
unsigned sanitized_height;
dingux_ipu_set_scaling_mode(ipu_keep_aspect, ipu_integer_scaling);
vid->keep_aspect = ipu_keep_aspect;
@ -1071,17 +1055,14 @@ static void sdl_dingux_apply_state_changes(void *data)
current_width, current_height,
&sanitized_width, &sanitized_height);
if ((screen_width != sanitized_width) ||
(screen_height != sanitized_height))
if ( (screen_width != sanitized_width)
|| (screen_height != sanitized_height))
sdl_dingux_set_output(vid,
current_width, current_height, vid->rgb32);
}
}
static uint32_t sdl_dingux_get_flags(void *data)
{
return 0;
}
static uint32_t sdl_dingux_get_flags(void *data) { return 0; }
static const video_poke_interface_t sdl_dingux_poke_interface = {
sdl_dingux_get_flags,

View File

@ -363,9 +363,9 @@ static bool sdl_gfx_frame(void *data, const void *frame, unsigned width,
unsigned pitch, const char *msg, video_frame_info_t *video_info)
{
char title[128];
sdl_video_t *vid = (sdl_video_t*)data;
sdl_video_t *vid = (sdl_video_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (!vid)

View File

@ -1069,6 +1069,9 @@ static bool sdl_rs90_gfx_frame(void *data, const void *frame,
unsigned pitch, const char *msg, video_frame_info_t *video_info)
{
sdl_rs90_video_t* vid = (sdl_rs90_video_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
/* Return early if:
* - Input sdl_rs90_video_t struct is NULL
@ -1100,7 +1103,7 @@ static bool sdl_rs90_gfx_frame(void *data, const void *frame,
}
#ifdef HAVE_MENU
menu_driver_frame(video_info->menu_is_alive, video_info);
menu_driver_frame(menu_is_alive, video_info);
#endif
if (likely(!vid->menu_active))

View File

@ -326,7 +326,7 @@ static bool sixel_gfx_frame(void *data, const void *frame,
bool draw = true;
sixel_t *sixel = (sixel_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (!frame || !frame_width || !frame_height)

View File

@ -772,7 +772,7 @@ static bool sunxi_frame(void *data, const void *frame, unsigned width,
{
struct sunxi_video *_dispvars = (struct sunxi_video*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (_dispvars->src_width != width || _dispvars->src_height != height)

View File

@ -670,7 +670,7 @@ static bool switch_frame(void *data, const void *frame,
uint32_t *out_buffer = NULL;
bool ffwd_mode = video_info->input_driver_nonblock_state;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
struct font_params
*osd_params = (struct font_params *)&video_info->osd_stat_params;

View File

@ -411,10 +411,10 @@ static bool vg_frame(void *data, const void *frame,
unsigned width = video_info->width;
unsigned height = video_info->height;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if ( frame_width != vg->mRenderWidth
if ( frame_width != vg->mRenderWidth
|| frame_height != vg->mRenderHeight
|| vg->should_resize)
{

View File

@ -220,7 +220,7 @@ static bool vga_gfx_frame(void *data, const void *frame,
bool draw = true;
vga_t *vga = (vga_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
if (!frame || !frame_width || !frame_height)
@ -230,9 +230,9 @@ static bool vga_gfx_frame(void *data, const void *frame,
menu_driver_frame(menu_is_alive, video_info);
#endif
if ( vga->vga_video_width != frame_width ||
vga->vga_video_height != frame_height ||
vga->vga_video_pitch != pitch)
if ( (vga->vga_video_width != frame_width)
|| (vga->vga_video_height != frame_height)
|| (vga->vga_video_pitch != pitch))
{
if (frame_width > 4 && frame_height > 4)
{

View File

@ -624,21 +624,18 @@ static bool vita2d_frame(void *data, const void *frame,
unsigned pitch, const char *msg, video_frame_info_t *video_info)
{
void *tex_p;
vita_video_t *vita = (vita_video_t *)data;
vita_video_t *vita = (vita_video_t *)data;
unsigned temp_width = PSP_FB_WIDTH;
unsigned temp_height = PSP_FB_HEIGHT;
vita2d_video_mode_data video_mode_data = {0};
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;
bool widgets_active = video_info->widgets_active;
#endif
bool statistics_show = video_info->statistics_show;
struct font_params
*osd_params = (struct font_params*)
&video_info->osd_stat_params;
bool statistics_show = video_info->statistics_show;
struct font_params *osd_params = (struct font_params*)&video_info->osd_stat_params;
if (frame)
{

View File

@ -4072,7 +4072,7 @@ static bool vulkan_frame(void *data, const void *frame,
struct font_params *osd_params = (struct font_params*)
&video_info->osd_stat_params;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
#ifdef HAVE_GFX_WIDGETS
bool widgets_active = video_info->widgets_active;

View File

@ -200,16 +200,14 @@ static bool xenon360_frame(void *data,
unsigned stride_in, stride_out, copy_size;
xenos_t *xenos = (xenos_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
DrawVerticeFormats *Rect = NULL;
ScreenUv[UV_TOP] = ((float) (width) / (float) XE_W)*2;
ScreenUv[UV_LEFT] = ((float) (height) / (float) XE_H)*2;
Rect = Xe_VB_Lock(xenos->device, xenos->vb,
DrawVerticeFormats *Rect = Xe_VB_Lock(xenos->device, xenos->vb,
0, 3 * sizeof(DrawVerticeFormats), XE_LOCK_WRITE);
ScreenUv[UV_TOP] = ((float)(width) / (float)XE_W) * 2;
ScreenUv[UV_LEFT] = ((float)(height) / (float)XE_H) * 2;
/* Bottom left */
Rect[1].v = ScreenUv[UV_LEFT];
Rect[2].u = ScreenUv[UV_TOP];

View File

@ -141,7 +141,7 @@ static bool xshm_frame(void *data, const void *frame, unsigned width,
unsigned y;
xshm_t *xshm = (xshm_t*)data;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
#endif
for (y = 0; y < height; y++)

View File

@ -1017,19 +1017,18 @@ static bool xv_frame(void *data, const void *frame, unsigned width,
XWindowAttributes target;
xv_t *xv = (xv_t*)data;
bool rgb32 = video_info->use_rgba;
#ifdef HAVE_MENU
bool menu_is_alive = video_info->menu_is_alive;
bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false;
menu_driver_frame(menu_is_alive, video_info);
if (menu_is_alive && xv->tex_frame)
{
frame = xv->tex_frame;
width = xv->tex_width;
frame = xv->tex_frame;
width = xv->tex_width;
height = xv->tex_height;
pitch = xv->tex_pitch;
rgb32 = xv->tex_rgb32;
pitch = xv->tex_pitch;
rgb32 = xv->tex_rgb32;
}
#endif

View File

@ -32,6 +32,10 @@
#include "gfx_widgets.h"
#include "font_driver.h"
#ifdef HAVE_MENU
#include "../menu/menu_defines.h"
#endif
#include "../configuration.h"
#include "../file_path_special.h"
#include "../msg_hash.h"
@ -1486,15 +1490,21 @@ void gfx_widgets_frame(void *data)
bool widgets_is_fastforwarding = video_info->widgets_is_fast_forwarding;
bool widgets_is_rewinding = video_info->widgets_is_rewinding;
bool runloop_is_slowmotion = video_info->runloop_is_slowmotion;
bool menu_screensaver_active = video_info->menu_screensaver_active;
bool notifications_hidden = video_info->notifications_hidden ||
video_info->msg_queue_delay;
#ifdef HAVE_MENU
bool menu_screensaver_active = (video_info->menu_st_flags & MENU_ST_FLAG_SCREENSAVER_ACTIVE) ? true : false;
#endif
bool notifications_hidden = video_info->notifications_hidden || video_info->msg_queue_delay;
int top_right_x_advance = video_width;
p_dispwidget->gfx_widgets_frame_count++;
/* If menu screensaver is active or notifications are hidden, draw nothing */
if (menu_screensaver_active || notifications_hidden)
#ifdef HAVE_MENU
/* If menu screensaver is active, draw nothing */
if (menu_screensaver_active)
return;
#endif
/* If notifications are hidden, draw nothing */
if (notifications_hidden)
return;
if (video_st->current_video && video_st->current_video->set_viewport)

View File

@ -2609,8 +2609,7 @@ void video_driver_build_info(video_frame_info_t *video_info)
video_info->memory_update_interval = settings->uints.memory_update_interval;
#ifdef HAVE_MENU
video_info->menu_is_alive = (menu_st->flags & MENU_ST_FLAG_ALIVE) ? true : false;
video_info->menu_screensaver_active = (menu_st->flags & MENU_ST_FLAG_SCREENSAVER_ACTIVE) ? true : false;
video_info->menu_st_flags = menu_st->flags;
video_info->menu_footer_opacity = settings->floats.menu_footer_opacity;
video_info->menu_header_opacity = settings->floats.menu_header_opacity;
video_info->materialui_color_theme = settings->uints.menu_materialui_color_theme;
@ -2627,8 +2626,7 @@ void video_driver_build_info(video_frame_info_t *video_info)
video_info->overlay_behind_menu = settings->bools.input_overlay_behind_menu;
video_info->libretro_running = (runloop_st->current_core.flags & RETRO_CORE_FLAG_GAME_LOADED) ? true : false;
#else
video_info->menu_is_alive = false;
video_info->menu_screensaver_active = false;
video_info->menu_st_flags = 0;
video_info->menu_footer_opacity = 0.0f;
video_info->menu_header_opacity = 0.0f;
video_info->materialui_color_theme = 0;
@ -3428,7 +3426,7 @@ void video_driver_frame(const void *data, unsigned width,
* that the next frame update is captured) */
if ( video_info.input_driver_nonblock_state
&& video_info.fastforward_frameskip
&& !(video_info.menu_is_alive
&& !((video_info.menu_st_flags & MENU_ST_FLAG_ALIVE)
|| (last_frame_duped && !!data)))
{
retro_time_t frame_time_accumulator_prev = frame_time_accumulator;
@ -3739,7 +3737,7 @@ void video_driver_frame(const void *data, unsigned width,
msg_entry.category,
msg_entry.prio,
false,
video_info.menu_is_alive
(video_info.menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false
);
}
/* ...otherwise, just output message via
@ -3901,7 +3899,8 @@ void video_driver_frame(const void *data, unsigned width,
if (video_st->current_video->frame(
video_st->data, data, width, height,
video_st->frame_count, (unsigned)pitch,
video_info.menu_screensaver_active || video_info.notifications_hidden ? "" : video_driver_msg,
((video_info.menu_st_flags & MENU_ST_FLAG_SCREENSAVER_ACTIVE) > 0)
|| video_info.notifications_hidden ? "" : video_driver_msg,
&video_info))
video_st->flags |= VIDEO_FLAG_ACTIVE;
else
@ -3916,7 +3915,7 @@ void video_driver_frame(const void *data, unsigned width,
|| video_info.memory_show
|| video_info.core_status_msg_show
)
&& !video_info.menu_screensaver_active
&& !((video_info.menu_st_flags & MENU_ST_FLAG_SCREENSAVER_ACTIVE))
&& !video_info.notifications_hidden
)
{

View File

@ -450,6 +450,8 @@ typedef struct video_frame_info
bool full_screen;
} osd_stat_params;
uint16_t menu_st_flags;
char stat_text[1024];
bool widgets_active;
@ -483,8 +485,6 @@ typedef struct video_frame_info
bool runloop_is_slowmotion;
bool runloop_is_paused;
bool fastforward_frameskip;
bool menu_is_alive;
bool menu_screensaver_active;
bool msg_bgcolor_enable;
bool crt_switch_hires_menu;
bool hdr_enable;

View File

@ -25,6 +25,54 @@ RETRO_BEGIN_DECLS
#define MENU_SETTINGS_AUDIO_MIXER_MAX_STREAMS (AUDIO_MIXER_MAX_SYSTEM_STREAMS-1)
enum menu_state_flags
{
MENU_ST_FLAG_ALIVE = (1 << 0),
MENU_ST_FLAG_IS_BINDING = (1 << 1),
MENU_ST_FLAG_INP_DLG_KB_DISPLAY = (1 << 2),
/* When enabled, on next iteration the 'Quick Menu'
* list will be pushed onto the stack */
MENU_ST_FLAG_PENDING_QUICK_MENU = (1 << 3),
MENU_ST_FLAG_PREVENT_POPULATE = (1 << 4),
/* The menu driver owns the userdata */
MENU_ST_FLAG_DATA_OWN = (1 << 5),
/* Flagged when menu entries need to be refreshed */
MENU_ST_FLAG_ENTRIES_NEED_REFRESH = (1 << 6),
MENU_ST_FLAG_ENTRIES_NONBLOCKING_REFRESH = (1 << 7),
/* 'Close Content'-hotkey menu resetting */
MENU_ST_FLAG_PENDING_CLOSE_CONTENT = (1 << 8),
/* Flagged when a core calls RETRO_ENVIRONMENT_SHUTDOWN,
* requiring the menu to be flushed on the next iteration */
MENU_ST_FLAG_PENDING_ENV_SHUTDOWN_FLUSH = (1 << 9),
/* Screensaver status
* - Does menu driver support screensaver functionality?
* - Is screensaver currently active? */
MENU_ST_FLAG_SCREENSAVER_SUPPORTED = (1 << 10),
MENU_ST_FLAG_SCREENSAVER_ACTIVE = (1 << 11)
};
enum menu_scroll_mode
{
MENU_SCROLL_PAGE = 0,
MENU_SCROLL_START_LETTER
};
enum contentless_core_runtime_status
{
CONTENTLESS_CORE_RUNTIME_UNKNOWN = 0,
CONTENTLESS_CORE_RUNTIME_MISSING,
CONTENTLESS_CORE_RUNTIME_VALID
};
enum action_iterate_type
{
ITERATE_TYPE_DEFAULT = 0,
ITERATE_TYPE_HELP,
ITERATE_TYPE_INFO,
ITERATE_TYPE_BIND
};
enum menu_image_type
{
MENU_IMAGE_NONE = 0,

View File

@ -308,53 +308,6 @@ enum menu_settings_type
MENU_SETTINGS_LAST
};
enum menu_state_flags
{
MENU_ST_FLAG_ALIVE = (1 << 0),
MENU_ST_FLAG_IS_BINDING = (1 << 1),
MENU_ST_FLAG_INP_DLG_KB_DISPLAY = (1 << 2),
/* When enabled, on next iteration the 'Quick Menu'
* list will be pushed onto the stack */
MENU_ST_FLAG_PENDING_QUICK_MENU = (1 << 3),
MENU_ST_FLAG_PREVENT_POPULATE = (1 << 4),
/* The menu driver owns the userdata */
MENU_ST_FLAG_DATA_OWN = (1 << 5),
/* Flagged when menu entries need to be refreshed */
MENU_ST_FLAG_ENTRIES_NEED_REFRESH = (1 << 6),
MENU_ST_FLAG_ENTRIES_NONBLOCKING_REFRESH = (1 << 7),
/* 'Close Content'-hotkey menu resetting */
MENU_ST_FLAG_PENDING_CLOSE_CONTENT = (1 << 8),
/* Flagged when a core calls RETRO_ENVIRONMENT_SHUTDOWN,
* requiring the menu to be flushed on the next iteration */
MENU_ST_FLAG_PENDING_ENV_SHUTDOWN_FLUSH = (1 << 9),
/* Screensaver status
* - Does menu driver support screensaver functionality?
* - Is screensaver currently active? */
MENU_ST_FLAG_SCREENSAVER_SUPPORTED = (1 << 10),
MENU_ST_FLAG_SCREENSAVER_ACTIVE = (1 << 11)
};
enum menu_scroll_mode
{
MENU_SCROLL_PAGE = 0,
MENU_SCROLL_START_LETTER
};
enum contentless_core_runtime_status
{
CONTENTLESS_CORE_RUNTIME_UNKNOWN = 0,
CONTENTLESS_CORE_RUNTIME_MISSING,
CONTENTLESS_CORE_RUNTIME_VALID
};
enum action_iterate_type
{
ITERATE_TYPE_DEFAULT = 0,
ITERATE_TYPE_HELP,
ITERATE_TYPE_INFO,
ITERATE_TYPE_BIND
};
struct menu_list
{
file_list_t **menu_stack;
@ -798,12 +751,9 @@ size_t menu_driver_get_thumbnail_system(void *data, char *s, size_t len);
extern const menu_ctx_driver_t *menu_ctx_drivers[];
extern menu_ctx_driver_t menu_ctx_ozone;
extern menu_ctx_driver_t menu_ctx_xui;
extern menu_ctx_driver_t menu_ctx_rgui;
extern menu_ctx_driver_t menu_ctx_mui;
extern menu_ctx_driver_t menu_ctx_xmb;
extern menu_ctx_driver_t menu_ctx_stripes;
RETRO_END_DECLS