elput: further simplify device internals
authorMike Blumenkrantz <zmike@osg.samsung.com>
Wed, 25 May 2016 16:49:44 +0000 (12:49 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Wed, 25 May 2016 16:57:27 +0000 (12:57 -0400)
'window' and pointer max w/h attributes are set for a manager object,
so let the attributes stay there. this also resolves issues where devices
created at a later point would fail to be initialized with these attributes

src/lib/elput/elput_evdev.c
src/lib/elput/elput_input.c
src/lib/elput/elput_manager.c
src/lib/elput/elput_private.h

index 5095320..7281532 100644 (file)
@@ -300,9 +300,9 @@ _keyboard_key_send(Elput_Device *dev, enum libinput_key_state state, const char
    ev->timestamp = timestamp;
    ev->same_screen = 1;
 
-   ev->window = dev->window;
-   ev->event_window = dev->window;
-   ev->root_window = dev->window;
+   ev->window = dev->seat->manager->window;
+   ev->event_window = dev->seat->manager->window;
+   ev->root_window = dev->seat->manager->window;
 
    if (state == LIBINPUT_KEY_STATE_PRESSED)
      ecore_event_add(ECORE_EVENT_KEY_DOWN, ev, NULL, NULL);
@@ -635,20 +635,20 @@ _pointer_motion_send(Elput_Device *edev)
 
    if (x < ptr->minx)
      x = ptr->minx;
-   else if (x >= ptr->minx + ptr->maxw)
-     x = ptr->minx + ptr->maxw - 1;
+   else if (x >= ptr->minx + ptr->seat->manager->input.pointer_w)
+     x = ptr->minx + ptr->seat->manager->input.pointer_w - 1;
 
    if (y < ptr->miny)
      y = ptr->miny;
-   else if (y >= ptr->miny + ptr->maxh)
-     y = ptr->miny + ptr->maxh - 1;
+   else if (y >= ptr->miny + ptr->seat->manager->input.pointer_h)
+     y = ptr->miny + ptr->seat->manager->input.pointer_h - 1;
 
    ptr->x = x;
    ptr->y = y;
 
-   ev->window = edev->window;
-   ev->event_window = edev->window;
-   ev->root_window = edev->window;
+   ev->window = edev->seat->manager->window;
+   ev->event_window = edev->seat->manager->window;
+   ev->root_window = edev->seat->manager->window;
    ev->timestamp = ptr->timestamp;
    ev->same_screen = 1;
 
@@ -736,9 +736,9 @@ _pointer_button_send(Elput_Device *edev, enum libinput_button_state state)
    ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));
    if (!ev) return;
 
-   ev->window = edev->window;
-   ev->event_window = edev->window;
-   ev->root_window = edev->window;
+   ev->window = edev->seat->manager->window;
+   ev->event_window = edev->seat->manager->window;
+   ev->root_window = edev->seat->manager->window;
    ev->timestamp = ptr->timestamp;
    ev->same_screen = 1;
 
@@ -854,9 +854,9 @@ _pointer_axis_send(Elput_Device *dev, int direction, int value)
    ev = calloc(1, sizeof(Ecore_Event_Mouse_Wheel));
    if (!ev) return;
 
-   ev->window = dev->window;
-   ev->event_window = dev->window;
-   ev->root_window = dev->window;
+   ev->window = dev->seat->manager->window;
+   ev->event_window = dev->seat->manager->window;
+   ev->root_window = dev->seat->manager->window;
    ev->timestamp = ptr->timestamp;
    ev->same_screen = 1;
 
@@ -960,9 +960,9 @@ _touch_event_send(Elput_Device *dev, struct libinput_event_touch *event, int typ
    ev = calloc(1, sizeof(Ecore_Event_Mouse_Button));
    if (!ev) return;
 
-   ev->window = dev->window;
-   ev->event_window = dev->window;
-   ev->root_window = dev->window;
+   ev->window = dev->seat->manager->window;
+   ev->event_window = dev->seat->manager->window;
+   ev->root_window = dev->seat->manager->window;
    ev->timestamp = libinput_event_touch_get_time(event);
    ev->same_screen = 1;
 
@@ -1067,9 +1067,9 @@ _touch_motion_send(Elput_Device *dev, struct libinput_event_touch *event)
    ev = calloc(1, sizeof(Ecore_Event_Mouse_Move));
    if (!ev) return;
 
-   ev->window = dev->window;
-   ev->event_window = dev->window;
-   ev->root_window = dev->window;
+   ev->window = dev->seat->manager->window;
+   ev->event_window = dev->seat->manager->window;
+   ev->root_window = dev->seat->manager->window;
    ev->timestamp = libinput_event_touch_get_time(event);
    ev->same_screen = 1;
 
index 45778eb..c7f55b1 100644 (file)
@@ -1,35 +1,6 @@
 #include "elput_private.h"
 #include <libudev.h>
 
-void
-_elput_input_window_update(Elput_Manager *manager)
-{
-   Eina_List *l, *ll;
-   Elput_Seat *seat;
-   Elput_Device *device;
-
-   if (manager->input.thread) return;
-   EINA_LIST_FOREACH(manager->input.seats, l, seat)
-     EINA_LIST_FOREACH(seat->devices, ll, device)
-       device->window = manager->window;
-}
-
-void
-_elput_input_pointer_max_update(Elput_Manager *manager)
-{
-   Eina_List *l;
-   Elput_Seat *eseat;
-
-   if (manager->input.thread) return;
-   EINA_LIST_FOREACH(manager->input.seats, l, eseat)
-     {
-        if (!eseat->ptr) continue;
-
-        eseat->ptr->maxw = manager->input.pointer_w;
-        eseat->ptr->maxh = manager->input.pointer_h;
-     }
-}
-
 static int
 _cb_open_restricted(const char *path, int flags, void *data)
 {
@@ -101,6 +72,7 @@ _udev_seat_create(Elput_Manager *em, const char *name)
 
    eseat = calloc(1, sizeof(Elput_Seat));
    if (!eseat) return NULL;
+   eseat->manager = em;
 
    eseat->name = eina_stringshare_add(name);
    em->input.seats = eina_list_append(em->input.seats, eseat);
@@ -307,11 +279,7 @@ _elput_input_init_end(void *data, Ecore_Thread *eth EINA_UNUSED)
        _cb_input_dispatch, &manager->input, NULL, NULL);
 
    if (manager->input.hdlr)
-     {
-        _process_events(&manager->input);
-        _elput_input_window_update(manager);
-        _elput_input_pointer_max_update(manager);
-     }
+      _process_events(&manager->input);
    else
      {
         ERR("Could not create input fd handler");
@@ -496,12 +464,7 @@ elput_input_devices_get(Elput_Seat *seat)
 EAPI void
 elput_input_pointer_max_set(Elput_Manager *manager, int maxw, int maxh)
 {
-   Eina_List *l;
-   Elput_Seat *eseat;
-
    EINA_SAFETY_ON_NULL_RETURN(manager);
    manager->input.pointer_w = maxw;
    manager->input.pointer_h = maxh;
-
-   _elput_input_pointer_max_update(manager);
 }
index 0dcc820..9b3bce4 100644 (file)
@@ -131,7 +131,6 @@ elput_manager_window_set(Elput_Manager *manager, unsigned int window)
    EINA_SAFETY_ON_NULL_RETURN(manager);
 
    manager->window = window;
-   _elput_input_window_update(manager);
 }
 
 EAPI const Eina_List *
index 0fc5d6a..0e0edd1 100644 (file)
@@ -149,7 +149,6 @@ struct _Elput_Pointer
    unsigned int timestamp;
 
    int minx, miny;
-   int maxw, maxh;
    int hotx, hoty;
 
    struct
@@ -203,13 +202,13 @@ struct _Elput_Seat
    Elput_Touch *touch;
 
    Eina_List *devices;
+   Elput_Manager *manager;
 };
 
 struct _Elput_Device
 {
    Elput_Seat *seat;
 
-   uint32_t window;
    uint32_t ow, oh;
 
    const char *path;