From d4e88324ac496fa15e46bea99938afb5cbb728c1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Mon, 30 Nov 2015 03:14:26 +0100 Subject: [PATCH] Move driver->osk_enable to input_driver.c --- driver.h | 1 - input/input_driver.c | 9 +++++++++ input/input_driver.h | 5 ++++- input/input_keyboard.c | 12 ++++++------ input/input_overlay.c | 8 ++++---- runloop.c | 12 ++++++------ tasks/task_overlay.c | 6 +++--- 7 files changed, 32 insertions(+), 21 deletions(-) diff --git a/driver.h b/driver.h index 14df1edbb2..ab0cf802be 100644 --- a/driver.h +++ b/driver.h @@ -217,7 +217,6 @@ typedef struct driver bool camera_active; bool location_active; - bool osk_enable; bool keyboard_linefeed_enable; #ifdef HAVE_MENU diff --git a/input/input_driver.c b/input/input_driver.c index 954c94e188..0d848bf226 100644 --- a/input/input_driver.c +++ b/input/input_driver.c @@ -82,6 +82,7 @@ struct turbo_buttons unsigned count; }; +static bool main_osk_enabled; static bool input_data_own; static const input_driver_t *main_input; static void *main_input_data; @@ -731,6 +732,14 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data) break; case RARCH_INPUT_CTL_OWNS_DRIVER: return input_data_own; + case RARCH_INPUT_CTL_SET_OSK_ENABLED: + main_osk_enabled = true; + break; + case RARCH_INPUT_CTL_UNSET_OSK_ENABLED: + main_osk_enabled = false; + break; + case RARCH_INPUT_CTL_IS_OSK_ENABLED: + return main_osk_enabled; case RARCH_INPUT_CTL_NONE: default: break; diff --git a/input/input_driver.h b/input/input_driver.h index ef500cd5e2..95e6c0e332 100644 --- a/input/input_driver.h +++ b/input/input_driver.h @@ -68,7 +68,10 @@ enum rarch_input_ctl_state RARCH_INPUT_CTL_IS_NONBLOCK_STATE, RARCH_INPUT_CTL_SET_OWN_DRIVER, RARCH_INPUT_CTL_UNSET_OWN_DRIVER, - RARCH_INPUT_CTL_OWNS_DRIVER + RARCH_INPUT_CTL_OWNS_DRIVER, + RARCH_INPUT_CTL_SET_OSK_ENABLED, + RARCH_INPUT_CTL_UNSET_OSK_ENABLED, + RARCH_INPUT_CTL_IS_OSK_ENABLED }; struct retro_keybind diff --git a/input/input_keyboard.c b/input/input_keyboard.c index 5a3829e8e3..2e4ccf3c60 100644 --- a/input/input_keyboard.c +++ b/input/input_keyboard.c @@ -35,6 +35,12 @@ struct input_keyboard_line void *userdata; }; +static input_keyboard_line_t *g_keyboard_line; + +static input_keyboard_press_t g_keyboard_press_cb; + +static void *g_keyboard_press_data; + static void input_keyboard_line_toggle_osk(bool enable) { driver_t *driver = driver_get_ptr(); @@ -160,12 +166,6 @@ const char **input_keyboard_line_get_buffer(const input_keyboard_line_t *state) return (const char**)&state->buffer; } -static input_keyboard_line_t *g_keyboard_line; - -static input_keyboard_press_t g_keyboard_press_cb; - -static void *g_keyboard_press_data; - /** * input_keyboard_start_line: * @userdata : Userdata. diff --git a/input/input_overlay.c b/input/input_overlay.c index af366431b4..2b94296561 100644 --- a/input/input_overlay.c +++ b/input/input_overlay.c @@ -545,10 +545,9 @@ void input_overlay_free(void) /* task_data = overlay_task_data_t* */ static void input_overlay_loaded(void *task_data, void *user_data, const char *err) { + input_overlay_t *ol; overlay_task_data_t *data = (overlay_task_data_t*)task_data; settings_t *settings = config_get_ptr(); - input_overlay_t *ol; - driver_t *driver = driver_get_ptr(); if (err) return; @@ -556,7 +555,8 @@ static void input_overlay_loaded(void *task_data, void *user_data, const char *e /* We can't display when the menu is up */ if (settings->input.overlay_hide_in_menu && menu_driver_alive()) { - if (!driver->osk_enable && settings->input.overlay_enable) + if (!input_driver_ctl(RARCH_INPUT_CTL_IS_OSK_ENABLED, NULL) + && settings->input.overlay_enable) { size_t i; for (i = 0; i < data->size; i++) @@ -587,7 +587,7 @@ static void input_overlay_loaded(void *task_data, void *user_data, const char *e overlay_ptr = ol; input_overlay_load_active(settings->input.overlay_opacity); - input_overlay_enable(driver->osk_enable ? settings->osk.enable : settings->input.overlay_enable); + input_overlay_enable(input_driver_ctl(RARCH_INPUT_CTL_IS_OSK_ENABLED, NULL) ? settings->osk.enable : settings->input.overlay_enable); input_overlay_set_scale_factor(settings->input.overlay_scale); ol->next_index = (ol->index + 1) % ol->size; diff --git a/runloop.c b/runloop.c index 87638f8b33..aad7d9cc33 100644 --- a/runloop.c +++ b/runloop.c @@ -796,20 +796,20 @@ bool rarch_main_ctl(enum rarch_main_ctl_state state, void *data) #ifdef HAVE_OVERLAY -static void rarch_main_iterate_linefeed_overlay(driver_t *driver, - settings_t *settings) +static void rarch_main_iterate_linefeed_overlay(driver_t *driver, settings_t *settings) { static char prev_overlay_restore = false; + bool osk_enable = input_driver_ctl(RARCH_INPUT_CTL_IS_OSK_ENABLED, NULL); - if (driver->osk_enable && !driver->keyboard_linefeed_enable) + if (osk_enable && !driver->keyboard_linefeed_enable) { - driver->osk_enable = false; + input_driver_ctl(RARCH_INPUT_CTL_UNSET_OSK_ENABLED, NULL); prev_overlay_restore = true; event_command(EVENT_CMD_OVERLAY_DEINIT); } - else if (!driver->osk_enable && driver->keyboard_linefeed_enable) + else if (!osk_enable && driver->keyboard_linefeed_enable) { - driver->osk_enable = true; + input_driver_ctl(RARCH_INPUT_CTL_SET_OSK_ENABLED, NULL); prev_overlay_restore = false; event_command(EVENT_CMD_OVERLAY_INIT); } diff --git a/tasks/task_overlay.c b/tasks/task_overlay.c index 551f5ccaf0..00d36ec92f 100644 --- a/tasks/task_overlay.c +++ b/tasks/task_overlay.c @@ -727,10 +727,10 @@ error: bool rarch_task_push_overlay_load_default( rarch_task_callback_t cb, void *user_data) { - driver_t *driver = driver_get_ptr(); settings_t *settings = config_get_ptr(); + bool osk_enable = input_driver_ctl(RARCH_INPUT_CTL_IS_OSK_ENABLED, NULL); - if (driver->osk_enable) + if (osk_enable) { if (!*settings->osk.overlay) return false; @@ -742,6 +742,6 @@ bool rarch_task_push_overlay_load_default( } return rarch_task_push_overlay_load( - driver->osk_enable ? settings->osk.overlay : settings->input.overlay, + osk_enable ? settings->osk.overlay : settings->input.overlay, cb, user_data); }