{
if (krt->HardKeys[data->keycode].repeat == EINA_FALSE)
{
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
res = xkb_keymap_key_set_repeats(e_comp_input_key->xkb.keymap, data->keycode, 0);
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
if (!res)
{
KLWRN("Failed to set repeat key(%d), value(%d)", data->keycode, 0);
EINA_SAFETY_ON_NULL_GOTO(kconfig, err);
krt->conf = kconfig;
- if (!e_input_thread_mode_get())
- {
- e_keyrouter_conf_init(kconfig);
- EINA_SAFETY_ON_NULL_GOTO(kconfig->conf, err);
- krt->conf = kconfig;
- krt->pictureoff_disabled = !!kconfig->conf->pictureoff_disabled;
+ e_keyrouter_conf_init(kconfig);
+ EINA_SAFETY_ON_NULL_GOTO(kconfig->conf, err);
+ krt->conf = kconfig;
+ krt->pictureoff_disabled = !!kconfig->conf->pictureoff_disabled;
- krt->composition_key.waiting_time = kconfig->conf->composition_key_wait_time;
- }
+ krt->composition_key.waiting_time = kconfig->conf->composition_key_wait_time;
/* Get keyname and keycode pair from Tizen Key Layout file */
- if (!e_input_thread_mode_get())
- {
- res = e_keyrouter_query_tizen_key_table();
- EINA_SAFETY_ON_FALSE_GOTO(res, err);
- }
+ res = e_keyrouter_query_tizen_key_table();
+ EINA_SAFETY_ON_FALSE_GOTO(res, err);
//ecore handler add for power callback registration
// if (!krt->pictureoff_disabled)
Eina_List *l;
/* unreference any existing keymap */
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
if (e_comp_input_key->xkb.keymap)
xkb_map_unref(e_comp_input_key->xkb.keymap);
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
+
/* unmap any existing keyboard area */
if (e_comp_input_key->xkb.area)
munmap(e_comp_input_key->xkb.area, e_comp_input_key->xkb.size);
if (e_comp_input_key->xkb.fd >= 0) close(e_comp_input_key->xkb.fd);
/* unreference any existing keyboard state */
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
if (e_comp_input_key->xkb.state)
{
latched =
if (!e_comp_input_key->xkb.state)
{
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
return;
}
/* increment keymap reference */
e_comp_input_key->xkb.keymap = keymap;
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
/* fetch updated modifiers */
e_comp_input_key->kbd.mod_shift =
xkb_mod_mask_t mod_depressed, mod_latched, mod_locked;
xkb_layout_index_t mod_group;
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
+
mod = xkb_state_serialize_mods(e_comp_input_key->xkb.state,
XKB_STATE_DEPRESSED);
+
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
+
mod_depressed = atomic_load(&e_comp_input_key->kbd.mod_depressed);
changed |= mod != mod_depressed;
atomic_store(&e_comp_input_key->kbd.mod_depressed, mod);
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
mod = xkb_state_serialize_mods(e_comp_input_key->xkb.state,
XKB_STATE_MODS_LATCHED);
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
+
mod_latched = atomic_load(&e_comp_input_key->kbd.mod_latched);
changed |= mod != mod_latched;
atomic_store(&e_comp_input_key->kbd.mod_latched, mod);
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
mod = xkb_state_serialize_mods(e_comp_input_key->xkb.state,
XKB_STATE_MODS_LOCKED);
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
+
mod_locked = atomic_load(&e_comp_input_key->kbd.mod_locked);
changed |= mod != mod_locked;
atomic_store(&e_comp_input_key->kbd.mod_locked, mod);
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
grp = xkb_state_serialize_layout(e_comp_input_key->xkb.state,
XKB_STATE_LAYOUT_EFFECTIVE);
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
+
mod_group = atomic_load(&e_comp_input_key->kbd.mod_group);
changed |= grp != mod_group;
atomic_store(&e_comp_input_key->kbd.mod_group, grp);
/* fetch new keymap based on names */
keymap = xkb_map_new_from_names(ctx, &names, 0);
use_cache_keymap = EINA_FALSE;
+ INF("Completed to load Keymap.\n");
}
else
{
keymap = xkb_map_new_from_file(ctx, file, XKB_KEYMAP_FORMAT_TEXT_V1, 0);
if (!keymap)
{
- WRN("Keymap file is exist (%s) but it is invaild file. Generate keymap using rmlvo\n", cache_path);
+ WRN("Keymap file is exist (%s) but it is invalid file. Generate keymap using rmlvo\n", cache_path);
fclose(file);
if (remove(cache_path) != 0)
WRN("Failed to remove keymap file: %s (errno: %d)", cache_path, errno);
keymap = xkb_map_new_from_names(ctx, &names, 0);
use_cache_keymap = EINA_FALSE;
+ INF("Completed to load Keymap.\n");
}
else
{
+ INF("Completed to load Keymap (%s).\n", cache_path);
eina_stringshare_del(cache_path);
cache_path = NULL;
fclose(file);
EINA_SAFETY_ON_NULL_RETURN_VAL(name, 0);
EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl, 0);
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
keymap = e_comp_input_key->xkb.keymap;
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
EINA_SAFETY_ON_NULL_GOTO(keymap, finish);
keysym = xkb_keysym_from_name(name, XKB_KEYSYM_NO_FLAGS);
goto finish;
}
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
keycode = _e_comp_wl_input_keymap_keysym_to_keycode(keymap, keysym);
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
return keycode;
EINA_SAFETY_ON_FALSE_RETURN_VAL(8 <= keycode, NULL);
EINA_SAFETY_ON_NULL_RETURN_VAL(e_comp_wl, NULL);
+ g_rec_mutex_lock(&e_comp_input_key->xkb.keymap_mutex);
if (!e_comp_input_key->xkb.state)
{
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
return NULL;
}
state = e_comp_input_key->xkb.state;
sym = xkb_state_key_get_one_sym(state, keycode);
+ g_rec_mutex_unlock(&e_comp_input_key->xkb.keymap_mutex);
if (sym == XKB_KEY_NoSymbol)
{