From d327863d0fff5fd869c6248ab78e8ceb3e8022a1 Mon Sep 17 00:00:00 2001 From: twinaphex Date: Thu, 29 Jan 2015 22:54:42 +0100 Subject: [PATCH] Only carry one input overlay state --- driver.h | 1 - input/input_overlay.c | 1 + input/keyboard_line.c | 6 +++-- libretro_version_1.c | 8 ++---- retroarch.c | 58 +++++++++++-------------------------------- retroarch.h | 8 ------ settings.c | 2 +- settings_data.c | 15 ----------- 8 files changed, 22 insertions(+), 77 deletions(-) diff --git a/driver.h b/driver.h index 7e8c1b4ae4..fe1599b4fa 100644 --- a/driver.h +++ b/driver.h @@ -283,7 +283,6 @@ typedef struct driver #ifdef HAVE_OVERLAY input_overlay_t *overlay; - input_overlay_t *osk_overlay; input_overlay_state_t overlay_state; #endif diff --git a/input/input_overlay.c b/input/input_overlay.c index ad0ecdc407..6bd32274fb 100644 --- a/input/input_overlay.c +++ b/input/input_overlay.c @@ -850,6 +850,7 @@ void input_overlay_poll_clear(input_overlay_t *ol, float opacity) size_t i; ol->blocked = false; + input_overlay_set_alpha_mod(ol, opacity); for (i = 0; i < ol->active->size; i++) diff --git a/input/keyboard_line.c b/input/keyboard_line.c index 3e31a81957..c300ba7388 100644 --- a/input/keyboard_line.c +++ b/input/keyboard_line.c @@ -51,7 +51,8 @@ void input_keyboard_line_free(input_keyboard_line_t *state) free(state->buffer); free(state); - rarch_main_command(RARCH_CMD_OSK_OVERLAY_STOP); + rarch_main_command(RARCH_CMD_OVERLAY_DEINIT); + driver.osk_active = false; } /** @@ -76,7 +77,8 @@ input_keyboard_line_t *input_keyboard_line_new(void *userdata, state->cb = cb; state->userdata = userdata; - rarch_main_command(RARCH_CMD_OSK_OVERLAY_START); + driver.osk_active = true; + rarch_main_command(RARCH_CMD_OVERLAY_INIT); return state; } diff --git a/libretro_version_1.c b/libretro_version_1.c index 3d6a8c8496..89100b5ea9 100644 --- a/libretro_version_1.c +++ b/libretro_version_1.c @@ -602,19 +602,15 @@ static inline void input_poll_overlay(input_overlay_t *overlay_device, float opa static void input_poll(void) { #ifdef HAVE_OVERLAY - input_overlay_t *overlay_device = driver.overlay; float opacity = g_settings.input.overlay_opacity; if (driver.osk_active) - { - overlay_device = driver.osk_overlay; opacity = g_settings.osk.opacity; - } #endif driver.input->poll(driver.input_data); #ifdef HAVE_OVERLAY - if (overlay_device) - input_poll_overlay(overlay_device, opacity); + if (driver.overlay) + input_poll_overlay(driver.overlay, opacity); #endif #ifdef HAVE_COMMAND diff --git a/retroarch.c b/retroarch.c index e25f23a05f..7af5ce82d4 100644 --- a/retroarch.c +++ b/retroarch.c @@ -2676,53 +2676,23 @@ bool rarch_main_command(unsigned cmd) case RARCH_CMD_OVERLAY_INIT: rarch_main_command(RARCH_CMD_OVERLAY_DEINIT); #ifdef HAVE_OVERLAY - if (!*g_settings.input.overlay) - break; + if (driver.osk_active) + { + if (!*g_settings.osk.overlay) + break; + } + else + { + if (!*g_settings.input.overlay) + break; + } - driver.overlay = input_overlay_new(g_settings.input.overlay, g_settings.input.overlay_enable, - g_settings.input.overlay_opacity, g_settings.input.overlay_scale); + driver.overlay = input_overlay_new(driver.osk_active ? g_settings.osk.overlay : g_settings.input.overlay, + driver.osk_active ? g_settings.osk.enable : g_settings.input.overlay_enable, + driver.osk_active ? g_settings.osk.opacity : g_settings.input.overlay_opacity, + driver.osk_active ? g_settings.osk.scale : g_settings.input.overlay_scale); if (!driver.overlay) RARCH_ERR("Failed to load overlay.\n"); -#endif - break; - case RARCH_CMD_OSK_OVERLAY_STOP: -#ifdef HAVE_OVERLAY - - driver.osk_active = false; - - rarch_main_command(RARCH_CMD_OSK_OVERLAY_DEINIT); - - if (g_settings.input.overlay_enable) - rarch_main_command(RARCH_CMD_OSK_OVERLAY_INIT); - -#endif - break; - case RARCH_CMD_OSK_OVERLAY_START: -#ifdef HAVE_OVERLAY - if (!g_settings.osk.enable) - return false; - - rarch_main_command(RARCH_CMD_OVERLAY_DEINIT); - rarch_main_command(RARCH_CMD_OSK_OVERLAY_INIT); - - driver.osk_active = true; -#endif - break; - case RARCH_CMD_OSK_OVERLAY_DEINIT: -#ifdef HAVE_OVERLAY - if (driver.osk_overlay) - input_overlay_free(driver.osk_overlay); - driver.osk_overlay = NULL; -#endif - break; - case RARCH_CMD_OSK_OVERLAY_INIT: -#ifdef HAVE_OVERLAY - rarch_main_command(RARCH_CMD_OSK_OVERLAY_DEINIT); - - driver.osk_overlay = input_overlay_new(g_settings.osk.overlay, g_settings.osk.enable, - 100, g_settings.osk.scale); - if (!driver.osk_overlay) - RARCH_ERR("Failed to load OSK overlay.\n"); #endif break; case RARCH_CMD_OVERLAY_NEXT: diff --git a/retroarch.h b/retroarch.h index 9ddd3c5b39..a31bc62ece 100644 --- a/retroarch.h +++ b/retroarch.h @@ -70,14 +70,6 @@ enum basic_event RARCH_CMD_OVERLAY_SET_ALPHA_MOD, /* Cycle to next overlay. */ RARCH_CMD_OVERLAY_NEXT, - /* Start OSK overlay. */ - RARCH_CMD_OSK_OVERLAY_START, - /* Stops OSK overlay. */ - RARCH_CMD_OSK_OVERLAY_STOP, - /* Initializes graphics filter. */ - RARCH_CMD_OSK_OVERLAY_INIT, - /* Initializes overlay. */ - RARCH_CMD_OSK_OVERLAY_DEINIT, /* Deinitializes overlay. */ RARCH_CMD_DSP_FILTER_INIT, /* Deinitializes graphics filter. */ diff --git a/settings.c b/settings.c index b37de1eb68..7b107e2e74 100644 --- a/settings.c +++ b/settings.c @@ -1984,7 +1984,7 @@ bool config_save_file(const char *path) config_set_path(conf, "osk_overlay_directory", *g_extern.osk_overlay_dir ? g_extern.osk_overlay_dir : "default"); - config_set_path(conf, "input_osk_overlay", g_settings.input.overlay); + config_set_path(conf, "input_osk_overlay", g_settings.osk.overlay); config_set_bool(conf, "input_osk_overlay_enable", g_settings.osk.enable); #endif diff --git a/settings_data.c b/settings_data.c index 6e671715a0..d3c34a7a01 100644 --- a/settings_data.c +++ b/settings_data.c @@ -3311,19 +3311,6 @@ static void load_content_change_handler(void *data) rarch_main_command(RARCH_CMD_LOAD_CONTENT); } -static void osk_overlay_enable_toggle_change_handler(void *data) -{ - rarch_setting_t *setting = (rarch_setting_t *)data; - - if (!setting) - return; - - if (setting->value.boolean) - rarch_main_command(RARCH_CMD_OSK_OVERLAY_INIT); - else - rarch_main_command(RARCH_CMD_OSK_OVERLAY_DEINIT); -} - static void overlay_enable_toggle_change_handler(void *data) { rarch_setting_t *setting = (rarch_setting_t *)data; @@ -5249,7 +5236,6 @@ static bool setting_data_append_list_osk_overlay_options( subgroup_info.name, general_write_handler, general_read_handler); - (*list)[list_info->index - 1].change_handler = osk_overlay_enable_toggle_change_handler; CONFIG_PATH( g_settings.osk.overlay, @@ -5261,7 +5247,6 @@ static bool setting_data_append_list_osk_overlay_options( general_write_handler, general_read_handler); settings_list_current_add_values(list, list_info, "cfg"); - settings_list_current_add_cmd(list, list_info, RARCH_CMD_OSK_OVERLAY_INIT); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY); END_SUB_GROUP(list, list_info);