ecore/wayland: Use eina_inlist instead of wl_list for globals.
authorRafael Antognolli <rafael.antognolli@intel.com>
Mon, 4 Nov 2013 15:48:57 +0000 (13:48 -0200)
committerRafael Antognolli <rafael.antognolli@intel.com>
Mon, 4 Nov 2013 15:50:04 +0000 (13:50 -0200)
Since we are allocating this list and returning it, let's make it more
EFL-like.

src/lib/ecore_wayland/Ecore_Wayland.h
src/lib/ecore_wayland/ecore_wl.c
src/lib/ecore_wayland/ecore_wl_private.h
src/modules/ecore_imf/wayland/wayland_module.c

index bcb7141..9c371a0 100644 (file)
@@ -90,10 +90,10 @@ typedef enum _Ecore_Wl_Window_Buffer_Type Ecore_Wl_Window_Buffer_Type;
 /** @since 1.7.6 */
 struct _Ecore_Wl_Global
 {
+   EINA_INLIST;
    unsigned int id;
    char *interface;
    unsigned int version;
-   struct wl_list link;
 };
 
 struct _Ecore_Wl_Event_Mouse_In
@@ -422,7 +422,7 @@ EAPI struct wl_list *ecore_wl_outputs_get(void);
  * @ingroup Ecore_Wl_Display_Group
  * @since 1.7.6
  */
-EAPI struct wl_list *ecore_wl_globals_get(void);
+EAPI Eina_Inlist *ecore_wl_globals_get(void);
 
 /**
  * Retrieves the Wayland Registry used for the current Wayland connection.
index bb0c5fe..2d5593c 100644 (file)
@@ -182,7 +182,6 @@ ecore_wl_init(const char *name)
 
    wl_list_init(&_ecore_wl_disp->inputs);
    wl_list_init(&_ecore_wl_disp->outputs);
-   wl_list_init(&_ecore_wl_disp->globals);
 
    _ecore_wl_disp->wl.registry =
      wl_display_get_registry(_ecore_wl_disp->wl.display);
@@ -254,7 +253,7 @@ ecore_wl_display_get(void)
    return _ecore_wl_disp->wl.display;
 }
 
-EAPI struct wl_list *
+EAPI Eina_Inlist *
 ecore_wl_globals_get(void)
 {
    if ((!_ecore_wl_disp) || (!_ecore_wl_disp->wl.display)) 
@@ -262,7 +261,7 @@ ecore_wl_globals_get(void)
 
    _ecore_wl_init_wait();
 
-   return &(_ecore_wl_disp->globals);
+   return _ecore_wl_disp->globals;
 }
 
 EAPI struct wl_registry *
@@ -429,7 +428,8 @@ _ecore_wl_shutdown(Eina_Bool close)
      {
         Ecore_Wl_Output *out, *tout;
         Ecore_Wl_Input *in, *tin;
-        Ecore_Wl_Global *global, *tglobal;
+        Ecore_Wl_Global *global;
+        Eina_Inlist *tmp;
 
         wl_list_for_each_safe(out, tout, &_ecore_wl_disp->outputs, link)
           _ecore_wl_output_del(out);
@@ -437,12 +437,13 @@ _ecore_wl_shutdown(Eina_Bool close)
         wl_list_for_each_safe(in, tin, &_ecore_wl_disp->inputs, link)
           _ecore_wl_input_del(in);
 
-        wl_list_for_each_safe(global, tglobal, &_ecore_wl_disp->globals, link)
-          {
-             wl_list_remove(&global->link);
-             free(global->interface);
-             free(global);
-          }
+        EINA_INLIST_FOREACH_SAFE(_ecore_wl_disp->globals, tmp, global)
+        {
+           _ecore_wl_disp->globals = eina_inlist_remove
+              (_ecore_wl_disp->globals, EINA_INLIST_GET(global));
+           free(global->interface);
+           free(global);
+        }
 
         _ecore_wl_xkb_shutdown(_ecore_wl_disp);
 
@@ -559,14 +560,12 @@ _ecore_wl_cb_handle_global(void *data, struct wl_registry *registry, unsigned in
 
    ewd = data;
 
-   global = malloc(sizeof(Ecore_Wl_Global));
-
-   memset(global, 0, sizeof(Ecore_Wl_Global));
+   global = calloc(1, sizeof(Ecore_Wl_Global));
 
    global->id = id;
    global->interface = strdup(interface);
    global->version = version;
-   wl_list_insert(ewd->globals.prev, &global->link);
+   ewd->globals = eina_inlist_append(ewd->globals, EINA_INLIST_GET(global));
 
    if (!strcmp(interface, "wl_compositor"))
      {
@@ -624,16 +623,18 @@ static void
 _ecore_wl_cb_handle_global_remove(void *data, struct wl_registry *registry EINA_UNUSED, unsigned int id)
 {
    Ecore_Wl_Display *ewd;
-   Ecore_Wl_Global *global, *tmp;
+   Ecore_Wl_Global *global;
+   Eina_Inlist *tmp;
 
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
    ewd = data;
 
-   wl_list_for_each_safe(global, tmp, &ewd->globals, link)
+   EINA_INLIST_FOREACH_SAFE(ewd->globals, tmp, global)
      {
         if (global->id != id) continue;
-        wl_list_remove(&global->link);
+        ewd->globals = eina_inlist_remove(ewd->globals,
+                                          EINA_INLIST_GET(global));
         free(global->interface);
         free(global);
      }
index 69b2f95..0127b44 100644 (file)
@@ -74,7 +74,7 @@ struct _Ecore_Wl_Display
 
    struct wl_list inputs;
    struct wl_list outputs;
-   struct wl_list globals; /** @since 1.7.6 */
+   Eina_Inlist *globals; /** @since 1.7.6 */
 
    Eina_Bool init_done;
 
index f4da2f7..b1f8beb 100644 (file)
@@ -96,7 +96,7 @@ im_module_create()
      {
         Ecore_Wl_Global *global;
         struct wl_registry *registry;
-        struct wl_list *globals;
+        Eina_Inlist *globals;
 
         if (!(registry = ecore_wl_registry_get()))
           return NULL;
@@ -104,7 +104,7 @@ im_module_create()
         if (!(globals = ecore_wl_globals_get()))
           return NULL;
 
-        wl_list_for_each(global, globals, link)
+        EINA_INLIST_FOREACH(globals, global)
           {
              if (!strcmp(global->interface, "wl_text_input_manager"))
                {