Move driver->osk_enable to input_driver.c

This commit is contained in:
twinaphex 2015-11-30 03:14:26 +01:00
parent 5b6641b077
commit d4e88324ac
7 changed files with 32 additions and 21 deletions

View File

@ -217,7 +217,6 @@ typedef struct driver
bool camera_active; bool camera_active;
bool location_active; bool location_active;
bool osk_enable;
bool keyboard_linefeed_enable; bool keyboard_linefeed_enable;
#ifdef HAVE_MENU #ifdef HAVE_MENU

View File

@ -82,6 +82,7 @@ struct turbo_buttons
unsigned count; unsigned count;
}; };
static bool main_osk_enabled;
static bool input_data_own; static bool input_data_own;
static const input_driver_t *main_input; static const input_driver_t *main_input;
static void *main_input_data; static void *main_input_data;
@ -731,6 +732,14 @@ bool input_driver_ctl(enum rarch_input_ctl_state state, void *data)
break; break;
case RARCH_INPUT_CTL_OWNS_DRIVER: case RARCH_INPUT_CTL_OWNS_DRIVER:
return input_data_own; 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: case RARCH_INPUT_CTL_NONE:
default: default:
break; break;

View File

@ -68,7 +68,10 @@ enum rarch_input_ctl_state
RARCH_INPUT_CTL_IS_NONBLOCK_STATE, RARCH_INPUT_CTL_IS_NONBLOCK_STATE,
RARCH_INPUT_CTL_SET_OWN_DRIVER, RARCH_INPUT_CTL_SET_OWN_DRIVER,
RARCH_INPUT_CTL_UNSET_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 struct retro_keybind

View File

@ -35,6 +35,12 @@ struct input_keyboard_line
void *userdata; 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) static void input_keyboard_line_toggle_osk(bool enable)
{ {
driver_t *driver = driver_get_ptr(); 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; 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: * input_keyboard_start_line:
* @userdata : Userdata. * @userdata : Userdata.

View File

@ -545,10 +545,9 @@ void input_overlay_free(void)
/* task_data = overlay_task_data_t* */ /* task_data = overlay_task_data_t* */
static void input_overlay_loaded(void *task_data, void *user_data, const char *err) 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; overlay_task_data_t *data = (overlay_task_data_t*)task_data;
settings_t *settings = config_get_ptr(); settings_t *settings = config_get_ptr();
input_overlay_t *ol;
driver_t *driver = driver_get_ptr();
if (err) if (err)
return; 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 */ /* We can't display when the menu is up */
if (settings->input.overlay_hide_in_menu && menu_driver_alive()) 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; size_t i;
for (i = 0; i < data->size; 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; overlay_ptr = ol;
input_overlay_load_active(settings->input.overlay_opacity); 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); input_overlay_set_scale_factor(settings->input.overlay_scale);
ol->next_index = (ol->index + 1) % ol->size; ol->next_index = (ol->index + 1) % ol->size;

View File

@ -796,20 +796,20 @@ bool rarch_main_ctl(enum rarch_main_ctl_state state, void *data)
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
static void rarch_main_iterate_linefeed_overlay(driver_t *driver, static void rarch_main_iterate_linefeed_overlay(driver_t *driver, settings_t *settings)
settings_t *settings)
{ {
static char prev_overlay_restore = false; 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; prev_overlay_restore = true;
event_command(EVENT_CMD_OVERLAY_DEINIT); 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; prev_overlay_restore = false;
event_command(EVENT_CMD_OVERLAY_INIT); event_command(EVENT_CMD_OVERLAY_INIT);
} }

View File

@ -727,10 +727,10 @@ error:
bool rarch_task_push_overlay_load_default( bool rarch_task_push_overlay_load_default(
rarch_task_callback_t cb, void *user_data) rarch_task_callback_t cb, void *user_data)
{ {
driver_t *driver = driver_get_ptr();
settings_t *settings = config_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) if (!*settings->osk.overlay)
return false; return false;
@ -742,6 +742,6 @@ bool rarch_task_push_overlay_load_default(
} }
return rarch_task_push_overlay_load( 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); cb, user_data);
} }