From 7900faa4194f07b2b3113b83cf462fb375a7c9aa Mon Sep 17 00:00:00 2001 From: twinaphex Date: Fri, 9 Aug 2019 21:59:58 +0200 Subject: [PATCH] Move menu_display_libretro to retroarch.c --- input/input_driver.h | 4 --- menu/drivers/xui.cpp | 8 +----- menu/menu_driver.c | 45 --------------------------------- menu/menu_driver.h | 3 --- retroarch.c | 60 +++++++++++++++++++++++++++++++++----------- 5 files changed, 47 insertions(+), 73 deletions(-) diff --git a/input/input_driver.h b/input/input_driver.h index f58feeff4b..c04e7923d7 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -249,10 +249,6 @@ void *input_get_data(void); void input_driver_set_flushing_input(void); -void input_driver_set_libretro_input_blocked(void); - -void input_driver_unset_libretro_input_blocked(void); - bool input_driver_is_libretro_input_blocked(void); void input_driver_set_nonblock_state(void); diff --git a/menu/drivers/xui.cpp b/menu/drivers/xui.cpp index 8b440d1f24..6f48673acd 100644 --- a/menu/drivers/xui.cpp +++ b/menu/drivers/xui.cpp @@ -453,13 +453,7 @@ static void blit_line(int x, int y, const char *message, bool green) static void xui_render_background(void) { -#if 0 - /* TODO/FIXME - refactor this */ - if (menu_display_libretro_running()) - XuiElementSetShow(m_background, FALSE); - else -#endif - XuiElementSetShow(m_background, TRUE); + XuiElementSetShow(m_background, TRUE); } static void xui_render_messagebox(void *data, const char *message) diff --git a/menu/menu_driver.c b/menu/menu_driver.c index 03c4935da1..bfc2d03030 100644 --- a/menu/menu_driver.c +++ b/menu/menu_driver.c @@ -602,51 +602,6 @@ video_coord_array_t *menu_display_get_coords_array(void) return &menu_disp_ca; } -bool menu_display_libretro_running( - bool rarch_is_inited, - bool rarch_is_dummy_core) -{ - settings_t *settings = config_get_ptr(); - if (!settings->bools.menu_pause_libretro) - { - if (rarch_is_inited && !rarch_is_dummy_core) - return true; - } - return false; -} - -/* Display the libretro core's framebuffer onscreen. */ -bool menu_display_libretro(bool is_idle, - bool rarch_is_inited, bool rarch_is_dummy_core) -{ - video_driver_set_texture_enable(true, false); - - if (menu_display_libretro_running( - rarch_is_inited, rarch_is_dummy_core)) - { - if (!input_driver_is_libretro_input_blocked()) - input_driver_set_libretro_input_blocked(); - - core_run(); - rarch_core_runtime_tick(); - input_driver_unset_libretro_input_blocked(); - - return true; - } - - if (is_idle) - { -#ifdef HAVE_DISCORD - discord_userdata_t userdata; - userdata.status = DISCORD_PRESENCE_GAME_PAUSED; - - command_event(CMD_EVENT_DISCORD_UPDATE, &userdata); -#endif - return false; /* Return false here for indication of idleness */ - } - return video_driver_cached_frame(); -} - /* Get the menu framebuffer's size dimensions. */ void menu_display_get_fb_size(unsigned *fb_width, unsigned *fb_height, size_t *fb_pitch) diff --git a/menu/menu_driver.h b/menu/menu_driver.h index c5fddb8db3..0d6455bfe2 100644 --- a/menu/menu_driver.h +++ b/menu/menu_driver.h @@ -560,9 +560,6 @@ void menu_display_font_free(font_data_t *font); void menu_display_coords_array_reset(void); video_coord_array_t *menu_display_get_coords_array(void); -bool menu_display_libretro(bool is_idle, bool is_inited, bool is_dummy); -bool menu_display_libretro_running(bool rarch_is_inited, - bool rarch_is_dummy_core); void menu_display_set_width(unsigned width); void menu_display_get_fb_size(unsigned *fb_width, unsigned *fb_height, diff --git a/retroarch.c b/retroarch.c index 2906cdb92d..c71657a204 100644 --- a/retroarch.c +++ b/retroarch.c @@ -12493,16 +12493,6 @@ void input_driver_set_flushing_input(void) input_driver_flushing_input = true; } -void input_driver_set_libretro_input_blocked(void) -{ - input_driver_block_libretro_input = true; -} - -void input_driver_unset_libretro_input_blocked(void) -{ - input_driver_block_libretro_input = false; -} - bool input_driver_is_libretro_input_blocked(void) { return input_driver_block_libretro_input; @@ -22906,6 +22896,50 @@ static bool input_driver_toggle_button_combo( old_pressed3 = pressed3; \ } +#if defined(HAVE_MENU) +static bool menu_display_libretro_running(void) +{ + settings_t *settings = configuration_settings; + if (!settings->bools.menu_pause_libretro) + { + bool core_type_is_dummy = current_core_type == CORE_TYPE_DUMMY; + if (rarch_is_inited && !core_type_is_dummy) + return true; + } + return false; +} + +/* Display the libretro core's framebuffer onscreen. */ +static bool menu_display_libretro(void) +{ + video_driver_set_texture_enable(true, false); + + if (menu_display_libretro_running()) + { + if (!input_driver_block_libretro_input) + input_driver_block_libretro_input = true; + + core_run(); + rarch_core_runtime_tick(); + input_driver_block_libretro_input = false; + + return true; + } + + if (runloop_idle) + { +#ifdef HAVE_DISCORD + discord_userdata_t userdata; + userdata.status = DISCORD_PRESENCE_GAME_PAUSED; + + command_event(CMD_EVENT_DISCORD_UPDATE, &userdata); +#endif + return false; /* Return false here for indication of idleness */ + } + return video_driver_cached_frame(); +} +#endif + static enum runloop_state runloop_check_state( settings_t *settings, bool input_nonblock_state, @@ -23204,9 +23238,7 @@ static enum runloop_state runloop_check_state( if (focused || !runloop_idle) { bool core_type_is_dummy = current_core_type == CORE_TYPE_DUMMY; - bool libretro_running = menu_display_libretro_running( - rarch_is_initialized, - core_type_is_dummy); + bool libretro_running = menu_display_libretro_running(); menu_handle_t *menu_data = menu_driver_get_ptr(); if (menu_data) @@ -23241,7 +23273,7 @@ static enum runloop_state runloop_check_state( } if (!runloop_idle) - menu_display_libretro(runloop_idle, rarch_is_initialized, core_type_is_dummy); + menu_display_libretro(); if (menu_data->driver_ctx->set_texture) menu_data->driver_ctx->set_texture();