devilhorns pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=500e76fd5368034d026aa286b7c01b8076dd1f46

commit 500e76fd5368034d026aa286b7c01b8076dd1f46
Author: Seunghun Lee <shiin....@samsung.com>
Date:   Tue Mar 24 10:45:11 2015 -0400

    ecore_drm: Add event of ECORE_DRM_EVENT_SEAT_ADD.
    
    Summary: To support multi-seat, ecore_drm need to issue the event to notify 
compositor of seat is added.
    
    Test Plan: N/A
    
    Reviewers: zmike, raster, gwanglim, devilhorns
    
    Reviewed By: devilhorns
    
    Subscribers: cedric
    
    Differential Revision: https://phab.enlightenment.org/D2212
---
 src/lib/ecore_drm/Ecore_Drm.h        |  2 ++
 src/lib/ecore_drm/ecore_drm.c        |  1 +
 src/lib/ecore_drm/ecore_drm_inputs.c | 26 +++++++++++++++++++-------
 3 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/src/lib/ecore_drm/Ecore_Drm.h b/src/lib/ecore_drm/Ecore_Drm.h
index ff460e3..6378022 100644
--- a/src/lib/ecore_drm/Ecore_Drm.h
+++ b/src/lib/ecore_drm/Ecore_Drm.h
@@ -162,6 +162,8 @@ EAPI extern int ECORE_DRM_EVENT_ACTIVATE;
 
 EAPI extern int ECORE_DRM_EVENT_OUTPUT; /**< @since 1.14 */
 
+EAPI extern int ECORE_DRM_EVENT_SEAT_ADD; /**< @since 1.14 */
+
 /**
  * @file
  * @brief Ecore functions for dealing with drm, virtual terminals
diff --git a/src/lib/ecore_drm/ecore_drm.c b/src/lib/ecore_drm/ecore_drm.c
index 2ae0766..c2dbfb0 100644
--- a/src/lib/ecore_drm/ecore_drm.c
+++ b/src/lib/ecore_drm/ecore_drm.c
@@ -90,6 +90,7 @@ ecore_drm_init(void)
 
    ECORE_DRM_EVENT_ACTIVATE = ecore_event_type_new();
    ECORE_DRM_EVENT_OUTPUT = ecore_event_type_new();
+   ECORE_DRM_EVENT_SEAT_ADD = ecore_event_type_new();
 
    /* return init count */
    return _ecore_drm_init_count;
diff --git a/src/lib/ecore_drm/ecore_drm_inputs.c 
b/src/lib/ecore_drm/ecore_drm_inputs.c
index d83f229..bfd237c 100644
--- a/src/lib/ecore_drm/ecore_drm_inputs.c
+++ b/src/lib/ecore_drm/ecore_drm_inputs.c
@@ -4,6 +4,8 @@
 
 #include "ecore_drm_private.h"
 
+EAPI int ECORE_DRM_EVENT_SEAT_ADD = -1;
+
 /* local functions */
 static int 
 _cb_open_restricted(const char *path, int flags, void *data)
@@ -59,17 +61,12 @@ _cb_close_restricted(int fd, void *data)
 }
 
 static Ecore_Drm_Seat *
-_seat_get(Ecore_Drm_Input *input, const char *seat)
+_seat_create(Ecore_Drm_Input *input, const char *seat)
 {
    Ecore_Drm_Seat *s;
-   Eina_List *l;
-
-   /* search for this name in existing seats */
-   EINA_LIST_FOREACH(input->dev->seats, l, s)
-     if (!strcmp(s->name, seat)) return s;
 
    /* try to allocate space for new seat */
-   if (!(s = calloc(1, sizeof(Ecore_Drm_Seat)))) 
+   if (!(s = calloc(1, sizeof(Ecore_Drm_Seat))))
      return NULL;
 
    s->input = input;
@@ -78,9 +75,24 @@ _seat_get(Ecore_Drm_Input *input, const char *seat)
    /* add this new seat to list */
    input->dev->seats = eina_list_append(input->dev->seats, s);
 
+   ecore_event_add(ECORE_DRM_EVENT_SEAT_ADD, NULL, NULL, NULL);
+
    return s;
 }
 
+static Ecore_Drm_Seat *
+_seat_get(Ecore_Drm_Input *input, const char *seat)
+{
+   Ecore_Drm_Seat *s;
+   Eina_List *l;
+
+   /* search for this name in existing seats */
+   EINA_LIST_FOREACH(input->dev->seats, l, s)
+     if (!strcmp(s->name, seat)) return s;
+
+   return _seat_create(input, seat);
+}
+
 static void 
 _device_added(Ecore_Drm_Input *input, struct libinput_device *device)
 {

-- 


Reply via email to