Only carry one input overlay state

This commit is contained in:
twinaphex 2015-01-29 22:54:42 +01:00
parent 0ea6a28b6b
commit d327863d0f
8 changed files with 22 additions and 77 deletions

View File

@ -283,7 +283,6 @@ typedef struct driver
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
input_overlay_t *overlay; input_overlay_t *overlay;
input_overlay_t *osk_overlay;
input_overlay_state_t overlay_state; input_overlay_state_t overlay_state;
#endif #endif

View File

@ -850,6 +850,7 @@ void input_overlay_poll_clear(input_overlay_t *ol, float opacity)
size_t i; size_t i;
ol->blocked = false; ol->blocked = false;
input_overlay_set_alpha_mod(ol, opacity); input_overlay_set_alpha_mod(ol, opacity);
for (i = 0; i < ol->active->size; i++) for (i = 0; i < ol->active->size; i++)

View File

@ -51,7 +51,8 @@ void input_keyboard_line_free(input_keyboard_line_t *state)
free(state->buffer); free(state->buffer);
free(state); 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->cb = cb;
state->userdata = userdata; state->userdata = userdata;
rarch_main_command(RARCH_CMD_OSK_OVERLAY_START); driver.osk_active = true;
rarch_main_command(RARCH_CMD_OVERLAY_INIT);
return state; return state;
} }

View File

@ -602,19 +602,15 @@ static inline void input_poll_overlay(input_overlay_t *overlay_device, float opa
static void input_poll(void) static void input_poll(void)
{ {
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
input_overlay_t *overlay_device = driver.overlay;
float opacity = g_settings.input.overlay_opacity; float opacity = g_settings.input.overlay_opacity;
if (driver.osk_active) if (driver.osk_active)
{
overlay_device = driver.osk_overlay;
opacity = g_settings.osk.opacity; opacity = g_settings.osk.opacity;
}
#endif #endif
driver.input->poll(driver.input_data); driver.input->poll(driver.input_data);
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
if (overlay_device) if (driver.overlay)
input_poll_overlay(overlay_device, opacity); input_poll_overlay(driver.overlay, opacity);
#endif #endif
#ifdef HAVE_COMMAND #ifdef HAVE_COMMAND

View File

@ -2676,53 +2676,23 @@ bool rarch_main_command(unsigned cmd)
case RARCH_CMD_OVERLAY_INIT: case RARCH_CMD_OVERLAY_INIT:
rarch_main_command(RARCH_CMD_OVERLAY_DEINIT); rarch_main_command(RARCH_CMD_OVERLAY_DEINIT);
#ifdef HAVE_OVERLAY #ifdef HAVE_OVERLAY
if (!*g_settings.input.overlay) if (driver.osk_active)
break; {
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, driver.overlay = input_overlay_new(driver.osk_active ? g_settings.osk.overlay : g_settings.input.overlay,
g_settings.input.overlay_opacity, g_settings.input.overlay_scale); 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) if (!driver.overlay)
RARCH_ERR("Failed to load overlay.\n"); 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 #endif
break; break;
case RARCH_CMD_OVERLAY_NEXT: case RARCH_CMD_OVERLAY_NEXT:

View File

@ -70,14 +70,6 @@ enum basic_event
RARCH_CMD_OVERLAY_SET_ALPHA_MOD, RARCH_CMD_OVERLAY_SET_ALPHA_MOD,
/* Cycle to next overlay. */ /* Cycle to next overlay. */
RARCH_CMD_OVERLAY_NEXT, 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. */ /* Deinitializes overlay. */
RARCH_CMD_DSP_FILTER_INIT, RARCH_CMD_DSP_FILTER_INIT,
/* Deinitializes graphics filter. */ /* Deinitializes graphics filter. */

View File

@ -1984,7 +1984,7 @@ bool config_save_file(const char *path)
config_set_path(conf, "osk_overlay_directory", config_set_path(conf, "osk_overlay_directory",
*g_extern.osk_overlay_dir ? g_extern.osk_overlay_dir : "default"); *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); config_set_bool(conf, "input_osk_overlay_enable", g_settings.osk.enable);
#endif #endif

View File

@ -3311,19 +3311,6 @@ static void load_content_change_handler(void *data)
rarch_main_command(RARCH_CMD_LOAD_CONTENT); 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) static void overlay_enable_toggle_change_handler(void *data)
{ {
rarch_setting_t *setting = (rarch_setting_t *)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, subgroup_info.name,
general_write_handler, general_write_handler,
general_read_handler); general_read_handler);
(*list)[list_info->index - 1].change_handler = osk_overlay_enable_toggle_change_handler;
CONFIG_PATH( CONFIG_PATH(
g_settings.osk.overlay, g_settings.osk.overlay,
@ -5261,7 +5247,6 @@ static bool setting_data_append_list_osk_overlay_options(
general_write_handler, general_write_handler,
general_read_handler); general_read_handler);
settings_list_current_add_values(list, list_info, "cfg"); 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); settings_data_list_current_add_flags(list, list_info, SD_FLAG_ALLOW_EMPTY);
END_SUB_GROUP(list, list_info); END_SUB_GROUP(list, list_info);