Only carry one input overlay state
This commit is contained in:
parent
0ea6a28b6b
commit
d327863d0f
1
driver.h
1
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
|
||||
|
||||
|
|
|
@ -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++)
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
58
retroarch.c
58
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:
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue