diff --git a/Makefile.common b/Makefile.common index c73350c8b6..f3ca6f44bc 100644 --- a/Makefile.common +++ b/Makefile.common @@ -336,13 +336,17 @@ OBJ += \ gfx/video_driver.o \ gfx/gfx_display.o \ gfx/gfx_animation.o \ - gfx/gfx_thumbnail_path.o \ - gfx/gfx_thumbnail.o \ configuration.o \ $(LIBRETRO_COMM_DIR)/dynamic/dylib.o \ cores/dynamic_dummy.o \ $(LIBRETRO_COMM_DIR)/queues/message_queue.o +ifeq ($(HAVE_MENU), 1) + OBJ += \ + gfx/gfx_thumbnail_path.o \ + gfx/gfx_thumbnail.o +endif + ifeq ($(HAVE_MICROPHONE), 1) DEFINES += -DHAVE_MICROPHONE OBJ += audio/microphone_driver.o @@ -2166,9 +2170,12 @@ ifeq ($(HAVE_NETWORKING), 1) tasks/task_http.o \ tasks/task_netplay_lan_scan.o \ tasks/task_netplay_nat_traversal.o \ - tasks/task_pl_thumbnail_download.o \ tasks/task_netplay_find_content.o + ifeq ($(HAVE_MENU), 1) + OBJ += tasks/task_pl_thumbnail_download.o + endif + ifeq ($(HAVE_MENU_COMMON), 1) OBJ += tasks/task_core_updater.o endif diff --git a/gfx/drivers/d3d10.c b/gfx/drivers/d3d10.c index 36417ea100..207534dcdb 100644 --- a/gfx/drivers/d3d10.c +++ b/gfx/drivers/d3d10.c @@ -2173,7 +2173,11 @@ static bool d3d10_gfx_frame( *osd_params = (struct font_params*) &video_info->osd_stat_params; const char *stat_text = video_info->stat_text; +#ifdef HAVE_MENU bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; +#else + bool menu_is_alive = false; +#endif bool overlay_behind_menu = video_info->overlay_behind_menu; unsigned black_frame_insertion = video_info->black_frame_insertion; int bfi_light_frames; diff --git a/gfx/drivers/d3d9cg.c b/gfx/drivers/d3d9cg.c index 360d6579f1..5f7f8c9cc5 100644 --- a/gfx/drivers/d3d9cg.c +++ b/gfx/drivers/d3d9cg.c @@ -2043,7 +2043,11 @@ 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; +#ifdef HAVE_MENU bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; +#else + bool menu_is_alive = false; +#endif bool overlay_behind_menu = video_info->overlay_behind_menu; #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/drivers/d3d9hlsl.c b/gfx/drivers/d3d9hlsl.c index d9c7f7ae23..af05a8d2d7 100644 --- a/gfx/drivers/d3d9hlsl.c +++ b/gfx/drivers/d3d9hlsl.c @@ -1636,7 +1636,11 @@ 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; +#ifdef HAVE_MENU bool menu_is_alive = (video_info->menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; +#else + bool menu_is_alive = false; +#endif bool overlay_behind_menu = video_info->overlay_behind_menu; #ifdef HAVE_GFX_WIDGETS bool widgets_active = video_info->widgets_active; diff --git a/gfx/video_driver.c b/gfx/video_driver.c index 31595ffb20..7fd30956d8 100644 --- a/gfx/video_driver.c +++ b/gfx/video_driver.c @@ -3626,6 +3626,7 @@ void video_driver_frame(const void *data, unsigned width, video_driver_pix_fmt = video_st->pix_fmt; bool runloop_idle = (runloop_st->flags & RUNLOOP_FLAG_IDLE) ? true : false; bool video_driver_active = (video_st->flags & VIDEO_FLAG_ACTIVE) ? true : false; + bool menu_is_alive = false; #if defined(HAVE_GFX_WIDGETS) dispgfx_widget_t *p_dispwidget = dispwidget_get_ptr(); bool widgets_active = p_dispwidget->active; @@ -3668,6 +3669,10 @@ void video_driver_frame(const void *data, unsigned width, video_driver_build_info(&video_info); +#ifdef HAVE_MENU + menu_is_alive = (video_info.menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false; +#endif + /* Take target refresh rate as initial FPS value instead of 0.00 */ if (!last_fps) last_fps = video_info.refresh_rate; @@ -3682,15 +3687,11 @@ void video_driver_frame(const void *data, unsigned width, * current frame is not (i.e. if core was * previously sending duped frames, ensure * that the next frame update is captured) */ -#if HAVE_MENU - if ( video_info.input_driver_nonblock_state - && video_info.fastforward_frameskip - && !((video_info.menu_st_flags & MENU_ST_FLAG_ALIVE) - || (last_frame_duped && !!data))) -#else - if ( video_info.input_driver_nonblock_state - && video_info.fastforward_frameskip) -#endif + if ( video_info.input_driver_nonblock_state + && video_info.fastforward_frameskip + && !( menu_is_alive + || (last_frame_duped && !!data)) + ) { uint16_t frame_time_accumulator_prev = frame_time_accumulator; uint16_t frame_time_delta = new_time - last_time; @@ -3762,7 +3763,7 @@ void video_driver_frame(const void *data, unsigned width, /* Consider frame dropped when frame time exceeds 1.75x target */ if ( video_st->frame_count > 4 - && !(video_info.menu_st_flags & MENU_ST_FLAG_ALIVE) + && !menu_is_alive && frame_time > 1000000.0f / video_info.refresh_rate * 1.75f) video_st->frame_drop_count++; @@ -4008,11 +4009,7 @@ void video_driver_frame(const void *data, unsigned width, msg_entry.category, msg_entry.prio, false, -#if HAVE_MENU - (video_info.menu_st_flags & MENU_ST_FLAG_ALIVE) ? true : false -#else - false -#endif + menu_is_alive ); } /* ...otherwise, just output message via