if (kbd || e_comp->input_mouse_grabs)
kwin = e_comp->ee_win;
//e_comp_override_add(); //nocomp condition
- g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
if ((e_comp->input_mouse_grabs && e_comp->input_key_grabs) ||
e_grabinput_get(mwin, 0, kwin))
{
e_comp->input_mouse_grabs += mouse;
e_comp->input_key_grabs += kbd;
}
- g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
return ret;
}
if (e_comp->input_mouse_grabs)
e_comp->input_mouse_grabs -= mouse;
- g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
if (e_comp->input_key_grabs)
e_comp->input_key_grabs -= kbd;
- g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
if (mouse && (!e_comp->input_mouse_grabs))
mwin = e_comp->ee_win;
- g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
if (kbd && (!e_comp->input_key_grabs))
kwin = e_comp->ee_win;
- g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
//e_comp_override_timed_pop(); //nocomp condition
if ((!mwin) && (!kwin)) return;
Eina_Bool use_native_type_buffer : 1; // use native buffer type
Eina_Bool avoid_afill; // avoid to fill the alpha channel as 0xff. that means filling 0x00.
- unsigned int input_key_grabs;
+ atomic_uint input_key_grabs;
unsigned int input_mouse_grabs;
E_Comp_Cb grab_cb;
}
g_mutex_unlock(&e_comp_wl->kbd.keys_mutex);
- g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
if ((!e_client_action_get()) && (!e_comp->input_key_grabs))
{
DBG("wl_array_add: Out of memory\n");
g_mutex_unlock(&e_comp_wl->kbd.keys_mutex);
g_mutex_unlock(&e_comp_wl->kbd.focused_mutex);
- g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
return EINA_FALSE;
}
g_mutex_unlock(&e_comp_wl->kbd.keys_mutex);
}
}
- g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
-
/* update modifier state */
e_comp_wl_input_keyboard_state_update(keycode, EINA_TRUE);
g_mutex_unlock(&e_comp_wl->kbd.keys_mutex);
/* If a key down event have been sent to clients, send a key up event to client for garantee key event sequence pair. (down/up) */
- g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
if ((delivered_key) ||
((!e_client_action_get()) && (!e_comp->input_key_grabs)))
{
}
g_mutex_unlock(&e_comp_wl->kbd.focused_mutex);
}
- g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
/* update modifier state */
e_comp_wl_input_keyboard_state_update(keycode, EINA_FALSE);
if (!desk) continue;
if (desk->visible && (!ec->iconic))
{
- g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
if (e_comp->input_key_grabs || e_comp->input_mouse_grabs)
{
- g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
break;
}
- g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
ELOGF("FOCUS_HISTORY", "focus set | refocus", ec);
e_client_frame_focus_set(ec, EINA_TRUE);
return EINA_FALSE;
}
- g_rec_mutex_lock(&e_comp->input_key_grabs_mutex);
if ((!e_client_action_get()) && (!e_comp->input_key_grabs))
{
ec = e_client_focused_get();
e_comp_wl_input_keyboard_state_update(keycode, pressed);
}
}
- g_rec_mutex_unlock(&e_comp->input_key_grabs_mutex);
return !!ec;
}