diff --git a/driver.h b/driver.h index 89cee7c3a5..79d21b6fcd 100644 --- a/driver.h +++ b/driver.h @@ -675,14 +675,12 @@ extern menu_ctx_driver_backend_t menu_ctx_backend_lakka; extern rarch_joypad_driver_t *joypad_drivers[]; -#define check_netplay_flip_func(trigger_input) check_netplay_flip(BIT64_GET(trigger_input, RARCH_NETPLAY_FLIP), BIT64_GET(trigger_input, RARCH_FULLSCREEN_TOGGLE_KEY)) #define check_overlay_func(input, old_input) rarch_check_overlay(BIT64_GET(input, RARCH_OVERLAY_NEXT), BIT64_GET(old_input, RARCH_OVERLAY_NEXT)) #define check_oneshot_func(trigger_input) (check_is_oneshot(BIT64_GET(trigger_input, RARCH_FRAMEADVANCE), BIT64_GET(trigger_input, RARCH_REWIND))) #define check_slowmotion_func(input) check_slowmotion(BIT64_GET(input, RARCH_SLOWMOTION)) #define check_shader_dir_func(trigger_input) check_shader_dir(BIT64_GET(trigger_input, RARCH_SHADER_NEXT), BIT64_GET(trigger_input, RARCH_SHADER_PREV)) #define check_enter_menu_func(input) BIT64_GET(input, RARCH_MENU_TOGGLE) #define check_mute_func(input, old_input) check_mute(BIT64_GET(input, RARCH_MUTE), BIT64_GET(old_input, RARCH_MUTE)) -#define check_fullscreen_func(trigger_input) rarch_check_fullscreen(BIT64_GET(trigger_input, RARCH_FULLSCREEN_TOGGLE_KEY)) #define check_fast_forward_button_func(input, old_input, trigger_input) check_fast_forward_button(BIT64_GET(trigger_input, RARCH_FAST_FORWARD_KEY), BIT64_GET(input, RARCH_FAST_FORWARD_HOLD_KEY), BIT64_GET(old_input, RARCH_FAST_FORWARD_HOLD_KEY)) #define check_rewind_func(input) check_rewind(BIT64_GET(input, RARCH_REWIND)) #define check_stateslots_func(trigger_input) check_stateslots(BIT64_GET(trigger_input, RARCH_STATE_SLOT_PLUS), BIT64_GET(trigger_input, RARCH_STATE_SLOT_MINUS)) diff --git a/frontend/menu/menu_common.c b/frontend/menu/menu_common.c index c7c7b4be97..e4142cfd4a 100644 --- a/frontend/menu/menu_common.c +++ b/frontend/menu/menu_common.c @@ -314,7 +314,8 @@ int menu_iterate(retro_input_t input, if (BIT64_GET(trigger_input, RARCH_OVERLAY_NEXT)) input_overlay_next(driver.overlay); #endif - check_fullscreen_func(trigger_input); + if (BIT64_GET(trigger_input, RARCH_FULLSCREEN_TOGGLE_KEY)) + rarch_main_command(RARCH_CMD_FULLSCREEN_TOGGLE); driver.retro_ctx.poll_cb(); diff --git a/general.h b/general.h index 344730dc4d..e217880fa3 100644 --- a/general.h +++ b/general.h @@ -150,6 +150,7 @@ enum basic_event RARCH_CMD_CHEATS_DEINIT, RARCH_CMD_NETPLAY_INIT, RARCH_CMD_NETPLAY_DEINIT, + RARCH_CMD_NETPLAY_FLIP_PLAYERS, RARCH_CMD_BSV_MOVIE_INIT, RARCH_CMD_BSV_MOVIE_DEINIT, RARCH_CMD_COMMAND_INIT, @@ -164,6 +165,7 @@ enum basic_event RARCH_CMD_DISK_PREV, RARCH_CMD_RUMBLE_STOP, RARCH_CMD_GRAB_MOUSE_TOGGLE, + RARCH_CMD_FULLSCREEN_TOGGLE, }; enum action_state @@ -819,7 +821,6 @@ bool rarch_main_command(unsigned action); int rarch_main_iterate(void); void rarch_main_deinit(void); void rarch_render_cached_frame(void); -bool rarch_check_fullscreen(bool pressed); void rarch_disk_control_set_eject(bool state, bool log); void rarch_disk_control_set_index(unsigned index); void rarch_disk_control_append_image(const char *path); diff --git a/retroarch.c b/retroarch.c index c1196926bc..244dc5d76c 100644 --- a/retroarch.c +++ b/retroarch.c @@ -1567,19 +1567,6 @@ static void main_state(unsigned cmd) RARCH_LOG("%s\n", msg); } -bool rarch_check_fullscreen(bool pressed) -{ - if (!pressed) - return false; - - /* If we go fullscreen we drop all drivers and - * reinitialize to be safe. */ - g_settings.video.fullscreen = !g_settings.video.fullscreen; - rarch_main_command(RARCH_CMD_REINIT); - - return true; -} - void rarch_disk_control_append_image(const char *path) { char msg[PATH_MAX]; @@ -2594,12 +2581,12 @@ bool rarch_main_command(unsigned cmd) break; case RARCH_CMD_NETPLAY_DEINIT: #ifdef HAVE_NETPLAY - { - netplay_t *netplay = (netplay_t*)driver.netplay_data; - if (netplay) - netplay_free(netplay); - driver.netplay_data = NULL; - } + { + netplay_t *netplay = (netplay_t*)driver.netplay_data; + if (netplay) + netplay_free(netplay); + driver.netplay_data = NULL; + } #endif break; case RARCH_CMD_NETPLAY_INIT: @@ -2608,6 +2595,19 @@ bool rarch_main_command(unsigned cmd) init_netplay(); #endif break; + case RARCH_CMD_NETPLAY_FLIP_PLAYERS: + { + netplay_t *netplay = (netplay_t*)driver.netplay_data; + if (netplay) + netplay_flip_players(netplay); + } + break; + case RARCH_CMD_FULLSCREEN_TOGGLE: + /* If we go fullscreen we drop all drivers and + * reinitialize to be safe. */ + g_settings.video.fullscreen = !g_settings.video.fullscreen; + rarch_main_command(RARCH_CMD_REINIT); + break; case RARCH_CMD_COMMAND_DEINIT: #ifdef HAVE_COMMAND if (driver.command) @@ -2655,8 +2655,13 @@ bool rarch_main_command(unsigned cmd) (const struct retro_disk_control_callback*) &g_extern.system.disk_control; - if (control->get_eject_state()) - check_disk_next(control); + if (!control) + return false; + + if (!control->get_eject_state()) + return false; + + check_disk_next(control); } break; case RARCH_CMD_DISK_PREV: @@ -2666,8 +2671,13 @@ bool rarch_main_command(unsigned cmd) (const struct retro_disk_control_callback*) &g_extern.system.disk_control; - if (control->get_eject_state()) - check_disk_prev(control); + if (!control) + return false; + + if (!control->get_eject_state()) + return false; + + check_disk_prev(control); } break; case RARCH_CMD_RUMBLE_STOP: diff --git a/runloop.c b/runloop.c index a020023a76..fc00874b9e 100644 --- a/runloop.c +++ b/runloop.c @@ -40,17 +40,6 @@ static void set_volume(float gain) g_extern.audio_data.volume_gain = db_to_gain(g_settings.audio.volume); } -#ifdef HAVE_NETPLAY -static void check_netplay_flip(bool pressed, bool fullscreen_toggle_pressed) -{ - netplay_t *netplay = (netplay_t*)driver.netplay_data; - if (pressed && netplay) - netplay_flip_players(netplay); - - rarch_check_fullscreen(fullscreen_toggle_pressed); -} -#endif - static bool check_pause(bool pressed, bool frameadvance_pressed) { static bool old_focus = true; @@ -390,12 +379,19 @@ static int do_state_checks( #endif if (!g_extern.is_paused) - check_fullscreen_func(trigger_input); + { + if (BIT64_GET(trigger_input, RARCH_FULLSCREEN_TOGGLE_KEY)) + rarch_main_command(RARCH_CMD_FULLSCREEN_TOGGLE); + } #ifdef HAVE_NETPLAY if (driver.netplay_data) { - check_netplay_flip_func(trigger_input); + if (BIT64_GET(trigger_input, RARCH_NETPLAY_FLIP)) + rarch_main_command(RARCH_CMD_NETPLAY_FLIP_PLAYERS); + + if (BIT64_GET(trigger_input, RARCH_FULLSCREEN_TOGGLE_KEY)) + rarch_main_command(RARCH_CMD_FULLSCREEN_TOGGLE); return 0; } #endif @@ -404,8 +400,12 @@ static int do_state_checks( if (g_extern.is_paused) { - if (check_fullscreen_func(trigger_input)) + if (BIT64_GET(trigger_input, RARCH_FULLSCREEN_TOGGLE_KEY)) + { + rarch_main_command(RARCH_CMD_FULLSCREEN_TOGGLE); rarch_render_cached_frame(); + } + if (!check_oneshot_func(trigger_input)) return 1; }