summaryrefslogtreecommitdiff
path: root/src/lib/elput/elput_private.h
diff options
context:
space:
mode:
authorMike Blumenkrantz <zmike@osg.samsung.com>2016-05-24 16:11:20 -0400
committerMike Blumenkrantz <zmike@osg.samsung.com>2016-05-25 12:57:27 -0400
commit5f088b026d8f39aafc6b6e70fe3b04dff79b179e (patch)
tree06909671c2b23b105009d19608f7a7d7e108cf2a /src/lib/elput/elput_private.h
parent33a5d44dcf36557b13aeba1088461504bae97373 (diff)
elput: define and implement an async device opening interface for libinput
this adds an overly-complex method of removing blocking dbus calls from libinput's synchronous device initialization architecture. libinput was clearly never meant to be used in this way, but we're doing it anyway because we're efl. #SamsungFeatures
Diffstat (limited to 'src/lib/elput/elput_private.h')
-rw-r--r--src/lib/elput/elput_private.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/lib/elput/elput_private.h b/src/lib/elput/elput_private.h
index c2f4b007ea..a934bf1d23 100644
--- a/src/lib/elput/elput_private.h
+++ b/src/lib/elput/elput_private.h
@@ -71,6 +71,7 @@ typedef struct _Elput_Interface
71 Eina_Bool (*connect)(Elput_Manager **manager, const char *seat, unsigned int tty); 71 Eina_Bool (*connect)(Elput_Manager **manager, const char *seat, unsigned int tty);
72 void (*disconnect)(Elput_Manager *manager); 72 void (*disconnect)(Elput_Manager *manager);
73 int (*open)(Elput_Manager *manager, const char *path, int flags); 73 int (*open)(Elput_Manager *manager, const char *path, int flags);
74 void (*open_async)(Elput_Manager *manager, const char *path, int flags);
74 void (*close)(Elput_Manager *manager, int fd); 75 void (*close)(Elput_Manager *manager, int fd);
75 Eina_Bool (*vt_set)(Elput_Manager *manager, int vt); 76 Eina_Bool (*vt_set)(Elput_Manager *manager, int vt);
76} Elput_Interface; 77} Elput_Interface;
@@ -82,6 +83,9 @@ typedef struct _Elput_Input
82 Ecore_Fd_Handler *hdlr; 83 Ecore_Fd_Handler *hdlr;
83 84
84 Eina_List *seats; 85 Eina_List *seats;
86 Ecore_Thread *thread;
87 Eldbus_Pending *current_pending;
88 int pipe;
85 89
86 Eina_Bool suspended : 1; 90 Eina_Bool suspended : 1;
87} Elput_Input; 91} Elput_Input;
@@ -224,18 +228,30 @@ struct _Elput_Manager
224 char *sid; 228 char *sid;
225 const char *seat; 229 const char *seat;
226 unsigned int vt_num; 230 unsigned int vt_num;
231 int vt_fd;
227 Ecore_Event_Handler *vt_hdlr; 232 Ecore_Event_Handler *vt_hdlr;
233 uint32_t window;
228 234
229 struct 235 struct
230 { 236 {
231 char *path; 237 char *path;
232 Eldbus_Object *obj; 238 Eldbus_Object *obj;
233 Eldbus_Connection *conn; 239 Eldbus_Connection *conn;
240 Eldbus_Proxy *session;
241 Eldbus_Proxy *manager;
234 } dbus; 242 } dbus;
235 243
236 Elput_Input input; 244 Elput_Input input;
245 Eina_Bool del : 1;
237}; 246};
238 247
248typedef struct _Elput_Async_Open
249{
250 Elput_Manager *manager;
251 char *path;
252 int flags;
253} Elput_Async_Open;
254
239int _evdev_event_process(struct libinput_event *event); 255int _evdev_event_process(struct libinput_event *event);
240Elput_Device *_evdev_device_create(Elput_Seat *seat, struct libinput_device *device); 256Elput_Device *_evdev_device_create(Elput_Seat *seat, struct libinput_device *device);
241void _evdev_device_destroy(Elput_Device *edev); 257void _evdev_device_destroy(Elput_Device *edev);