From: Seunghun Lee Date: Tue, 24 Mar 2015 14:45:11 +0000 (-0400) Subject: ecore_drm: Add event of ECORE_DRM_EVENT_SEAT_ADD. X-Git-Tag: v1.14.0-alpha1~126 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=500e76fd5368034d026aa286b7c01b8076dd1f46;p=platform%2Fupstream%2Fefl.git 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 --- 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) {