From 0b24618cd520784e073b9a11158dcfc803640a30 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 30 Nov 2015 22:56:41 +0100 Subject: [PATCH] Move driver->command to input_driver.c --- command_event.c | 52 ++++++++++---------------------------------- driver.h | 3 --- input/input_driver.c | 45 ++++++++++++++++++++++++++++++++++---- input/input_driver.h | 4 +++- 4 files changed, 56 insertions(+), 48 deletions(-) diff --git a/command_event.c b/command_event.c index 1b9ab3185a..59dbf9cfdf 100644 --- a/command_event.c +++ b/command_event.c @@ -55,27 +55,6 @@ #include #endif -#ifdef HAVE_COMMAND -static void event_init_command(void) -{ - driver_t *driver = driver_get_ptr(); - settings_t *settings = config_get_ptr(); - - if (!settings->stdin_cmd_enable && !settings->network_cmd_enable) - return; - - if (settings->stdin_cmd_enable && input_driver_ctl(RARCH_INPUT_CTL_GRAB_STDIN, NULL)) - { - RARCH_WARN("stdin command interface is desired, but input driver has already claimed stdin.\n" - "Cannot use this command interface.\n"); - } - - if (!(driver->command = rarch_cmd_new(settings->stdin_cmd_enable - && !input_driver_ctl(RARCH_INPUT_CTL_GRAB_STDIN, NULL), - settings->network_cmd_enable, settings->network_cmd_port))) - RARCH_ERR("Failed to initialize command interface.\n"); -} -#endif #ifdef HAVE_NETWORK_GAMEPAD static void event_init_remote(void) @@ -1590,33 +1569,26 @@ bool event_command(enum event_command cmd) event_command(EVENT_CMD_REINIT); break; case EVENT_CMD_COMMAND_DEINIT: -#ifdef HAVE_COMMAND - if (driver->command) - rarch_cmd_free(driver->command); - driver->command = NULL; -#endif + input_driver_ctl(RARCH_INPUT_CTL_COMMAND_DEINIT, NULL); break; case EVENT_CMD_COMMAND_INIT: event_command(EVENT_CMD_COMMAND_DEINIT); - -#ifdef HAVE_COMMAND - event_init_command(); + input_driver_ctl(RARCH_INPUT_CTL_COMMAND_INIT, NULL); + break; + case EVENT_CMD_REMOTE_DEINIT: +#ifdef HAVE_NETWORK_GAMEPAD + if (driver->remote) + rarch_remote_free(driver->remote); + driver->remote = NULL; #endif break; -case EVENT_CMD_REMOTE_DEINIT: -#ifdef HAVE_NETWORK_GAMEPAD - if (driver->remote) - rarch_remote_free(driver->remote); - driver->remote = NULL; -#endif - break; -case EVENT_CMD_REMOTE_INIT: - event_command(EVENT_CMD_REMOTE_DEINIT); + case EVENT_CMD_REMOTE_INIT: + event_command(EVENT_CMD_REMOTE_DEINIT); #ifdef HAVE_NETWORK_GAMEPAD - event_init_remote(); + event_init_remote(); #endif - break; + break; case EVENT_CMD_TEMPORARY_CONTENT_DEINIT: content_temporary_free(); break; diff --git a/driver.h b/driver.h index 1fa8fcc64b..0b27e0605c 100644 --- a/driver.h +++ b/driver.h @@ -242,9 +242,6 @@ typedef struct driver bool menu_data_own; #endif -#ifdef HAVE_COMMAND - rarch_cmd_t *command; -#endif #ifdef HAVE_NETWORK_GAMEPAD rarch_remote_t *remote; #endif diff --git a/input/input_driver.c b/input/input_driver.c index a7e7ebfb75..1b11615b3c 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -82,6 +82,9 @@ struct turbo_buttons unsigned count; }; +#ifdef HAVE_COMMAND +static rarch_cmd_t *input_driver_command; +#endif static bool input_driver_keyboard_linefeed_enable; static bool input_driver_osk_enabled; static bool input_driver_data_own; @@ -276,8 +279,8 @@ static retro_input_t input_driver_keys_pressed(void) #endif #ifdef HAVE_COMMAND - if (driver->command) - state |= rarch_cmd_get(driver->command, key); + if (input_driver_command) + state |= rarch_cmd_get(input_driver_command, key); #endif #ifdef HAVE_NETWORK_GAMEPAD @@ -430,8 +433,8 @@ void input_poll(void) #endif #ifdef HAVE_COMMAND - if (driver->command) - rarch_cmd_poll(driver->command); + if (input_driver_command) + rarch_cmd_poll(input_driver_command); #endif #ifdef HAVE_NETWORK_GAMEPAD @@ -634,6 +637,28 @@ bool input_driver_data_ptr_is_same(void *data) return (current_input_data == data); } +#ifdef HAVE_COMMAND +static void input_driver_command_init(void) +{ + driver_t *driver = driver_get_ptr(); + settings_t *settings = config_get_ptr(); + + if (!settings->stdin_cmd_enable && !settings->network_cmd_enable) + return; + + if (settings->stdin_cmd_enable && input_driver_ctl(RARCH_INPUT_CTL_GRAB_STDIN, NULL)) + { + RARCH_WARN("stdin command interface is desired, but input driver has already claimed stdin.\n" + "Cannot use this command interface.\n"); + } + + if (!(input_driver_command = rarch_cmd_new(settings->stdin_cmd_enable + && !input_driver_ctl(RARCH_INPUT_CTL_GRAB_STDIN, NULL), + settings->network_cmd_enable, settings->network_cmd_port))) + RARCH_ERR("Failed to initialize command interface.\n"); +} +#endif + bool input_driver_ctl(enum rarch_input_ctl_state state, void *data) { settings_t *settings = config_get_ptr(); @@ -749,6 +774,18 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data) break; case RARCH_INPUT_CTL_IS_KEYBOARD_LINEFEED_ENABLED: return input_driver_keyboard_linefeed_enable; + case RARCH_INPUT_CTL_COMMAND_INIT: +#ifdef HAVE_COMMAND + input_driver_command_init(); +#endif + break; + case RARCH_INPUT_CTL_COMMAND_DEINIT: +#ifdef HAVE_COMMAND + if (input_driver_command) + rarch_cmd_free(input_driver_command); + input_driver_command = NULL; +#endif + break; case RARCH_INPUT_CTL_NONE: default: break; diff --git a/input/input_driver.h b/input/input_driver.h index e279e51be4..148d06c675 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -74,7 +74,9 @@ enum rarch_input_ctl_state RARCH_INPUT_CTL_IS_OSK_ENABLED, RARCH_INPUT_CTL_SET_KEYBOARD_LINEFEED_ENABLED, RARCH_INPUT_CTL_UNSET_KEYBOARD_LINEFEED_ENABLED, - RARCH_INPUT_CTL_IS_KEYBOARD_LINEFEED_ENABLED + RARCH_INPUT_CTL_IS_KEYBOARD_LINEFEED_ENABLED, + RARCH_INPUT_CTL_COMMAND_INIT, + RARCH_INPUT_CTL_COMMAND_DEINIT }; struct retro_keybind