src/bin/inputmgr/e_mouse.c \
src/bin/inputmgr/e_input.c \
src/bin/inputmgr/e_input_event.c \
-src/bin/inputmgr/e_input_inputs.c \
+src/bin/inputmgr/e_input_backend.c \
src/bin/inputmgr/e_input_device.c \
src/bin/inputmgr/e_input_evdev.c \
src/bin/inputmgr/e_input_thread_client.c \
#include "e_comp_intern.h"
#include "e_input_intern.h"
#include "e_input_device_intern.h"
+#include "e_input_backend_intern.h"
#include "e_policy_intern.h"
#include "e_map_intern.h"
#include "e_policy_visibility_intern.h"
ec_data.ec = ec;
INF("[%s] ec: %p\n", __func__, ec);
- e_input_thread_safe_call(_e_input_thread_client_free, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_input_thread_client_free, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
_e_client_private_finish(ec);
free(ec);
ec_data.ec = ec;
INF("[%s] ec: %p\n", __func__, ec);
- e_input_thread_safe_call(_e_input_thread_client_del, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_input_thread_client_del, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
g_rec_mutex_unlock(&e_comp->ec_list_mutex);
}
ec_data.visibility = ec->visibility.obscured;
INF("[%s] ec(%p), visibility(%d)\n", __func__, ec, ec->visibility.obscured);
- e_input_thread_safe_call(_e_input_thread_client_visibility_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_input_thread_client_visibility_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
static Eina_Bool
ec_new_data.wl_surface = ec->comp_data ? ec->comp_data->wl_surface : NULL;
INF("[%s] ec(%p), surface(%p)\n", __func__, ec, ec_new_data.wl_surface);
- e_input_thread_safe_call(_e_input_thread_client_new, &ec_new_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_input_thread_client_new, &ec_new_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
E_API E_Client *
ec_data.layer = layer;
INF("[%s] ec(%p), layer(%d)\n", __func__, ec, layer);
- e_input_thread_safe_call(_e_input_thread_client_layer_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_input_thread_client_layer_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
E_API Eina_Bool
strncpy(ec_data.icccm_name, name, sizeof(ec_data.icccm_name)-1);
INF("[%s] ec(%p), surface(%p), name(%s)\n", __func__, ec, ec_data.wl_surface, name);
- e_input_thread_safe_call(_e_input_thread_client_icccm_name_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_input_thread_client_icccm_name_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
}
strncpy(ec_data.netwm_name, name, sizeof(ec_data.netwm_name)-1);
INF("[%s] ec(%p), surface(%p), name(%s)\n", __func__, ec, ec_data.wl_surface, ec_data.netwm_name);
- e_input_thread_safe_call(_e_input_thread_client_netwm_name_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_input_thread_client_netwm_name_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
E_API Eina_Stringshare *
strncpy(ec_data.icccm_title, title, sizeof(ec_data.icccm_title)-1);
INF("[%s] ec(%p), surface(%p)\n", __func__, ec, ec_data.wl_surface);
- e_input_thread_safe_call(_e_input_thread_client_icccm_title_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_input_thread_client_icccm_title_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
}
ec_data.is_video = is_video;
INF("[%s] ec(%p), is_video(%d)\n", __func__, ec, is_video);
- e_input_thread_safe_call(_e_input_thread_client_video_mode_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_input_thread_client_video_mode_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
#include "e_policy_intern.h"
#include "e_maximize_intern.h"
#include "e_policy_visibility_intern.h"
-#include "e_input_intern.h"
+#include "e_input_backend_intern.h"
#include "e_comp_input_intern.h"
#include "e_comp_wl_subsurface_intern.h"
#include "e_zone_intern.h"
layer_data.relative = relative;
INF("[%s] layer(%u), function type(%d), item(%p), relative(%p)\n", __func__, layer, type, item, relative);
- e_input_thread_safe_call(_e_comp_input_thread_layers_update, &layer_data, sizeof(E_Comp_Input_Layer_Data));
+ e_input_backend_thread_safe_call(_e_comp_input_thread_layers_update, &layer_data, sizeof(E_Comp_Input_Layer_Data));
}
static void
#include "e_comp_intern.h"
#include "e_input_intern.h"
#include "e_input_device_intern.h"
+#include "e_input_backend_intern.h"
#include "e_place_intern.h"
#include "e_policy_intern.h"
#include "e_maximize_intern.h"
ec_data.ec = focused_ec;
INF("[%s] focused ec(%p)\n", __func__, focused_ec);
- e_input_thread_safe_call(_e_zone_input_thread_focused_client_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_zone_input_thread_focused_client_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
EINTERN E_Zone *
#include "e_zone_intern.h"
#include "e_eom_intern.h"
#include "e_input_intern.h"
+#include "e_input_backend_intern.h"
#include <Eio.h>
if (e_input_thread_mode_get())
{
- e_input_thread_init();
- e_input_thread_start();
+ e_input_backend_thread_init();
+ e_input_backend_thread_start();
}
if (e_config->eom_enable)
# include <systemd/sd-daemon.h>
#endif
+typedef struct {
+ E_Input_Thread_Safe_Call_Cb safe_call_cb;
+ unsigned int data_length;
+} E_Input_Thread_Request_Data;
+
#define TS_DO
#ifdef TS_DO
static double t0, t1, t2;
}
void
-_input_events_process(E_Input_Backend *input)
+e_input_backend_events_process(E_Input_Backend *input)
{
struct libinput_event *event;
while ((event = libinput_get_event(input->libinput)))
ERR("Failed to dispatch libinput events: %m");
/* process pending events */
- _input_events_process(input);
+ e_input_backend_events_process(input);
if (e_config->key_input_ttrace_enable)
{
if (e_config->key_input_ttrace_enable)
{
- TRACE_INPUT_DEVICE_BEGIN(_input_events_process);
- ELOGF("INPUT", "_input_events_process|B|", NULL);
+ TRACE_INPUT_DEVICE_BEGIN(e_input_backend_events_process);
+ ELOGF("INPUT", "e_input_backend_events_process|B|", NULL);
}
/* process pending events */
- _input_events_process(input);
+ e_input_backend_events_process(input);
if (e_config->key_input_ttrace_enable)
{
TRACE_INPUT_DEVICE_END();
- ELOGF("INPUT", "_input_events_process|E|", NULL);
+ ELOGF("INPUT", "e_input_backend_events_process|E|", NULL);
TRACE_INPUT_DEVICE_END();
ELOGF("INPUT", "input_dispatch|E|", NULL);
#endif
/* enable this input */
- if (!e_input_enable_input(input))
+ if (!e_input_backend_enable_input(input))
{
ERR("Failed to enable input");
return;
input_event_source->tag = g_source_add_unix_fd(&input_event_source->gsource, input->fd, G_IO_IN);
if (!input->event_source)
- e_input_create_event_source(input);
+ e_input_backend_create_event_source(input);
//create main loop
input->input_thread_loop = g_main_loop_new(context, FALSE);
}
void
-_e_input_key_event_list_add(Ecore_Event_Key *key)
+e_input_backend_key_event_list_add(Ecore_Event_Key *key)
{
Ecore_Event_Key *clone = NULL;
}
EINTERN Eina_Bool
-e_input_enable_input(E_Input_Backend *input)
+e_input_backend_enable_input(E_Input_Backend *input)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(input, EINA_FALSE);
EINA_SAFETY_ON_NULL_RETURN_VAL(input->libinput, EINA_FALSE);
input->suspended = EINA_FALSE;
/* process pending events */
- _input_events_process(input);
+ e_input_backend_events_process(input);
}
input->enabled = EINA_TRUE;
}
EINTERN void
-e_input_disable_input(E_Input_Backend *input)
+e_input_backend_disable_input(E_Input_Backend *input)
{
EINA_SAFETY_ON_NULL_RETURN(input);
EINA_SAFETY_ON_TRUE_RETURN(input->suspended);
libinput_suspend(input->libinput);
/* process pending events */
- _input_events_process(input);
+ e_input_backend_events_process(input);
input->suspended = EINA_TRUE;
}
EINTERN void
-e_input_create_event_source(E_Input_Backend *input)
+e_input_backend_create_event_source(E_Input_Backend *input)
{
input->event_source = e_input_event_source_create();
g_input_event_source = input->event_source;
}
-EINTERN void e_input_thread_start()
+EINTERN void e_input_backend_thread_start()
{
EINA_SAFETY_ON_NULL_RETURN(g_input_backend);
g_input_backend->input_thread = ecore_thread_feedback_run(input_thread_start, input_thread_feedback, input_thread_end, input_thread_cancel, g_input_backend, EINA_FALSE);
}
-EINTERN void e_input_thread_init()
+EINTERN void e_input_backend_thread_init()
{
if (pipe(main_to_input_thread_pipe_fd) != 0)
ERR("error in pipe\n");
}
}
-EINTERN void e_input_thread_shutdown()
+EINTERN void e_input_backend_thread_shutdown()
{
EINA_SAFETY_ON_NULL_RETURN(g_input_backend);
close(g_input_backend->main_to_input_thread_pipe_fd[1]);
}
-EINTERN void e_input_thread_input_backend_set(E_Input_Backend *input)
+EINTERN void e_input_backend_thread_input_backend_set(E_Input_Backend *input)
{
g_input_backend = input;
}
EINTERN void
-e_input_thread_safe_call(E_Input_Thread_Safe_Call_Cb cb, void *data, size_t data_length)
+e_input_backend_thread_safe_call(E_Input_Thread_Safe_Call_Cb cb, void *data, size_t data_length)
{
E_Input_Thread_Request_Data order;
order.safe_call_cb = cb;
--- /dev/null
+#ifndef E_INPUT_BACKEND_INTERN_H
+#define E_INPUT_BACKEND_INTERN_H
+
+#include "e_intern.h"
+#include "e_input_intern.h"
+
+typedef struct _E_Input_Backend E_Input_Backend;
+
+struct _E_Input_Backend
+{
+ int fd;
+ E_Input_Device *dev;
+ struct libinput *libinput;
+
+ Ecore_Fd_Handler *hdlr;
+
+ Eina_Bool enabled : 1;
+ Eina_Bool suspended : 1;
+ Eina_Bool left_handed : 1;
+
+ Ecore_Thread *thread;
+ Ecore_Thread *input_thread;
+ E_Input_Libinput_Backend backend;
+
+ Eina_Bool log_disable : 1;
+ Eina_Bool log_use_eina : 1;
+
+ unsigned int path_ndevices;
+
+ GMainLoop *input_thread_loop;
+ E_Input_Event_Source *event_source;
+
+ int main_to_input_thread_pipe_fd[2];
+};
+
+EINTERN void e_input_backend_thread_init();
+EINTERN void e_input_backend_thread_shutdown();
+
+EINTERN Eina_Bool e_input_backend_enable_input(E_Input_Backend *input);
+EINTERN void e_input_backend_disable_input(E_Input_Backend *input);
+EINTERN void e_input_backend_create_event_source(E_Input_Backend *input);
+EINTERN void e_input_backend_thread_start();
+EINTERN void e_input_backend_thread_input_backend_set(E_Input_Backend *input);
+EINTERN void e_input_backend_thread_safe_call(E_Input_Thread_Safe_Call_Cb cb, void *data, size_t data_length);
+EINTERN void e_input_backend_events_process(E_Input_Backend *input);
+EINTERN void e_input_backend_key_event_list_add(Ecore_Event_Key *key);
+
+#endif
input->thread = NULL;
/* enable this input */
- if (!e_input_enable_input(input))
+ if (!e_input_backend_enable_input(input))
{
ERR("Failed to enable input");
return;
dev->inputs = eina_list_append(dev->inputs, input);
/* process pending events */
- _input_events_process(input);
+ e_input_backend_events_process(input);
}
static void
if (e_input_thread_mode_get())
{
- e_input_thread_input_backend_set(input);
+ e_input_backend_thread_input_backend_set(input);
return EINA_TRUE;
}
goto err;
/* enable this input */
- if (!e_input_enable_input(input))
+ if (!e_input_backend_enable_input(input))
{
ERR("Failed to enable input");
goto err;
dev->inputs = eina_list_append(dev->inputs, input);
/* process pending events */
- _input_events_process(input);
+ e_input_backend_events_process(input);
return EINA_TRUE;
input->thread = NULL;
/* enable this input */
- if (!e_input_enable_input(input))
+ if (!e_input_backend_enable_input(input))
{
ERR("Failed to enable input");
return;
dev->inputs = eina_list_append(dev->inputs, input);
/* process pending events */
- _input_events_process(input);
+ e_input_backend_events_process(input);
}
static void
TRACE_INPUT_END();
/* enable this input */
- if (!e_input_enable_input(input))
+ if (!e_input_backend_enable_input(input))
{
ERR("Failed to enable input");
goto err;
dev->inputs = eina_list_append(dev->inputs, input);
/* process pending events */
- _input_events_process(input);
+ e_input_backend_events_process(input);
return EINA_TRUE;
ELOGF("INPUT", "ECORE_EVENT_KEY:%s:%s:%u:%lld|B|", NULL, state ? "PRESS" : "RELEASE", e->keyname, timestamp, (long long unsigned int)libinput_event_keyboard_get_time_usec(event));
}
- _e_input_key_event_list_add(e);
+ e_input_backend_key_event_list_add(e);
if (e_input_thread_mode_get())
{
}
/* process pending events */
- _input_events_process(input);
+ e_input_backend_events_process(input);
res = EINA_TRUE;
}
#include "e_intern.h"
#include "e_input_intern.h"
+#include "e_input_backend_intern.h"
typedef struct _E_Input_Evdev E_Input_Evdev;
typedef struct _E_Input_Seat E_Input_Seat;
EINTERN const char *e_input_evdev_seatname_get(E_Input_Evdev *evdev);
EINTERN Eina_Bool e_input_evdev_seatname_set(E_Input_Evdev *evdev, const char *seatname);
+EINTERN Eina_Bool e_input_libinput_context_create(E_Input_Backend *input);
#endif
#include <libinput.h>
typedef struct _E_Input E_Input;
-typedef struct _E_Input_Backend E_Input_Backend;
typedef void (*e_input_relative_motion_cb)(double dx[2], double dy[2], uint64_t time_us);
typedef void (*e_input_keyboard_grab_key_cb)(uint32_t keycode, uint32_t state, uint32_t timestamp, void *dev);
typedef void (*E_Input_Thread_Safe_Call_Cb)(void *data);
-typedef struct {
- E_Input_Thread_Safe_Call_Cb safe_call_cb;
- unsigned int data_length;
-} E_Input_Thread_Request_Data;
-
struct _E_Input
{
Ecore_Window window;
e_input_keyboard_grab_key_cb keyboard_grab_key_handler;
};
-struct _E_Input_Backend
-{
- int fd;
- E_Input_Device *dev;
- struct libinput *libinput;
-
- Ecore_Fd_Handler *hdlr;
-
- Eina_Bool enabled : 1;
- Eina_Bool suspended : 1;
- Eina_Bool left_handed : 1;
-
- Ecore_Thread *thread;
- Ecore_Thread *input_thread;
- E_Input_Libinput_Backend backend;
-
- Eina_Bool log_disable : 1;
- Eina_Bool log_use_eina : 1;
-
- unsigned int path_ndevices;
-
- GMainLoop *input_thread_loop;
- E_Input_Event_Source *event_source;
-
- int main_to_input_thread_pipe_fd[2];
-};
-
struct _E_Input_Hook
{
EINA_INLIST;
EINTERN E_Input *e_input_get(void);
EINTERN Ecore_Evas *e_input_ecore_evas_get(E_Input *ei);
-EINTERN Eina_Bool e_input_enable_input(E_Input_Backend *input);
-EINTERN void e_input_disable_input(E_Input_Backend *input);
-
EINTERN Eina_Bool e_input_relative_motion_handler_set(e_input_relative_motion_cb handler);
EINTERN e_input_relative_motion_cb e_input_relative_motion_handler_get(void);
EINTERN void e_input_touch_max_count_set(unsigned int max_count);
-EINTERN void e_input_create_event_source(E_Input_Backend *input);
EINTERN void e_input_flush_keyboard_share_events(void);
EINTERN void e_input_main_thread_id_set(pid_t tid);
EINTERN void e_input_boost_lock(GMutex *mutex);
EINTERN void e_input_boost_unlock(GMutex *mutex);
EINTERN void e_input_thread_id_set(pid_t tid);
-EINTERN void e_input_thread_start();
-EINTERN void e_input_thread_input_backend_set(E_Input_Backend *input);
-EINTERN void e_input_thread_safe_call(E_Input_Thread_Safe_Call_Cb cb, void *data, size_t data_length);
-
-EINTERN void e_input_thread_init();
-EINTERN void e_input_thread_shutdown();
-
-EINTERN Eina_Bool e_input_libinput_context_create(E_Input_Backend *input);
-EINTERN void _input_events_process(E_Input_Backend *input);
EINTERN void _e_input_hook_call(E_Input_Hook_Point hookpoint, const char *device_name);
-EINTERN void _e_input_key_event_list_add(Ecore_Event_Key *key);
-
#endif
#include "e_keyrouter_intern.h"
#include "e_input_intern.h"
#include "e_input_event_intern.h"
+#include "e_input_backend_intern.h"
#include "e_comp_wl_input_intern.h"
#include "e_comp_wl_intern.h"
#include "e_info_server_intern.h"
static void
_e_keyrouter_keygrab_print(void *data EINA_UNUSED, const char *log_path)
{
- e_input_thread_safe_call(_e_keyrouter_input_thread_keygrab_print, (void *)log_path, strlen(log_path)+1);
+ e_input_backend_thread_safe_call(_e_keyrouter_input_thread_keygrab_print, (void *)log_path, strlen(log_path)+1);
}
static Eina_Bool
#include "e_comp_wl_tbm_intern.h"
#include "e_comp_wl_viewport_intern.h"
#include "e_comp_intern.h"
-#include "e_input_intern.h"
+#include "e_input_backend_intern.h"
#include "e_keyrouter_intern.h"
#include "e_error_intern.h"
#include "e_pointer_intern.h"
}
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 *));
+ e_input_backend_thread_safe_call(_e_input_thread_client_cb_focus_set, (void *)&ec->comp_data->surface, sizeof(struct wl_resource *));
}
static void
_e_comp_wl_focus_check();
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 *));
+ e_input_backend_thread_safe_call(_e_input_thread_client_cb_focus_unset, (void *)&ec->comp_data->surface, sizeof(struct wl_resource *));
}
static void
#include "e_comp_wl_intern.h"
#include "e_input_intern.h"
#include "e_input_device_intern.h"
+#include "e_input_backend_intern.h"
#include "e_pointer_intern.h"
#include "e_comp_object_intern.h"
#include "e_comp_input_intern.h"
ec_data.layer_block = ec->layer_block;
ec_data.is_cursor = ec->is_cursor;
INF("[%s] ec(%p), layer_block(%d), is_cursor(%d)\n", __func__, ec, ec->layer_block, ec->is_cursor);
- e_input_thread_safe_call(_e_comp_wl_input_thread_cursor_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_comp_wl_input_thread_cursor_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
/* Set a pointer_object after wl_surface commit
return;
}
- e_input_thread_safe_call(_e_comp_wl_input_thread_cb_keyboard_enabled_set, &enabled, sizeof(Eina_Bool));
+ e_input_backend_thread_safe_call(_e_comp_wl_input_thread_cb_keyboard_enabled_set, &enabled, sizeof(Eina_Bool));
_e_comp_wl_input_update_seat_caps(NULL);
}
#include "e_keyrouter_intern.h"
#include "e_input_intern.h"
+#include "e_input_backend_intern.h"
#include "e_comp_wl_input_intern.h"
#include "e_comp_wl_intern.h"
#include "e_client_intern.h"
keygrab_data.mode = mode;
INF("client: %p, surface: %p, key: %d, mode: %d\n", keygrab_data.client, keygrab_data.surface, keygrab_data.key, keygrab_data.mode);
- e_input_thread_safe_call(_e_keyrouter_input_thread_keygrab_set, &keygrab_data, sizeof(E_Input_Thread_Request_Keygrab_Data));
+ e_input_backend_thread_safe_call(_e_keyrouter_input_thread_keygrab_set, &keygrab_data, sizeof(E_Input_Thread_Request_Keygrab_Data));
}
static void
keygrab_data.mode = TIZEN_KEYROUTER_MODE_NONE; /* UNUSED */
INF("client: %p, surface: %p, key: %d\n", keygrab_data.client, keygrab_data.surface, keygrab_data.key);
- e_input_thread_safe_call(_e_keyrouter_input_thread_keygrab_unset, &keygrab_data, sizeof(E_Input_Thread_Request_Keygrab_Data));
+ e_input_backend_thread_safe_call(_e_keyrouter_input_thread_keygrab_unset, &keygrab_data, sizeof(E_Input_Thread_Request_Keygrab_Data));
}
/* tizen_keyrouter get_keygrab_status request handler */
#include "e_utils_intern.h"
#include "e_screensaver_intern.h"
#include "e_hwc_window_intern.h"
-#include "e_input_intern.h"
+#include "e_input_backend_intern.h"
#include "e_input_thread_client_intern.h"
#include <device/display.h>
ec_data.ec = ec;
ec_data.is_cursor = 1;
INF("[%s] ec(%p), is_cursor(%d)\n", __func__, ec, ec->is_cursor);
- e_input_thread_safe_call(_e_policy_wl_input_thread_cursor_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
+ e_input_backend_thread_safe_call(_e_policy_wl_input_thread_cursor_set, &ec_data, sizeof(E_Input_Thread_Request_EClient_Data));
}
}