_e_comp_wl_pid_hook_call(E_COMP_WL_PID_HOOK_CONNECTED_CLIENT_CREATE, pid);
}
+static void
+_e_input_thread_client_cb_focus_set(void *data)
+{
+ struct wl_resource *surface = NULL;
+
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ surface = *(struct wl_resource **)data;
+
+ INF("[input thread|%s] surface(%p)", __func__, surface);
+
+ e_comp_input_key->kbd.focus = surface;
+}
+
static void
_e_comp_wl_client_cb_focus_set(void *data EINA_UNUSED, E_Client *ec)
{
_e_comp_wl_configure_send(ec, 0, 0);
}
- e_comp_input_key->kbd.focus = ec->comp_data->surface;
+ INF("[%s] surface(%p)", __func__, ec->comp_data->surface);
+ e_input_thread_safe_call(_e_input_thread_client_cb_focus_set, (void *)&ec->comp_data->surface, sizeof(struct wl_resource *));
+}
+
+static void
+_e_input_thread_client_cb_focus_unset(void *data)
+{
+ struct wl_resource *surface = NULL;
+
+ EINA_SAFETY_ON_NULL_RETURN(data);
+ surface = *(struct wl_resource **)data;
+
+ INF("[input thread|%s] surface(%p)", __func__, surface);
+
+ if (e_comp_input_key->kbd.focus == surface)
+ e_comp_input_key->kbd.focus = NULL;
}
static void
_e_comp_wl_focus_check();
- if (e_comp_input_key->kbd.focus == ec->comp_data->surface)
- e_comp_input_key->kbd.focus = NULL;
+ INF("[%s] surface(%p)", __func__, ec->comp_data->surface);
+ e_input_thread_safe_call(_e_input_thread_client_cb_focus_unset, (void *)&ec->comp_data->surface, sizeof(struct wl_resource *));
}
static void