antognolli pushed a commit to branch master.

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

commit ad731e8b213ff38fed95f069a3ba79aba339925a
Author: Rafael Antognolli <rafael.antogno...@intel.com>
Date:   Mon Oct 28 14:46:40 2013 -0200

    Revert "change init done bindings."
    
    This reverts commit b87afd1b943b260c92f8493647b7d9cae327656e.
    
    Wrong branch, wrong commit.
---
 src/lib/ecore_wayland/Ecore_Wayland.h              |  6 --
 src/lib/ecore_wayland/ecore_wl.c                   | 65 ++++++----------------
 .../engines/wayland/ecore_evas_wayland_egl.c       |  2 +
 .../engines/wayland/ecore_evas_wayland_shm.c       |  2 +
 4 files changed, 20 insertions(+), 55 deletions(-)

diff --git a/src/lib/ecore_wayland/Ecore_Wayland.h 
b/src/lib/ecore_wayland/Ecore_Wayland.h
index 15c5940..30545b7 100644
--- a/src/lib/ecore_wayland/Ecore_Wayland.h
+++ b/src/lib/ecore_wayland/Ecore_Wayland.h
@@ -120,8 +120,6 @@ struct _Ecore_Wl_Display
    struct wl_list outputs;
    struct wl_list globals; /** @since 1.7.6 */
 
-   Eina_Bool init_done;
-
    struct
      {
         struct xkb_context *context;
@@ -368,10 +366,6 @@ struct _Ecore_Wl_Event_Interfaces_Bound
    Eina_Bool compositor : 1;
    Eina_Bool shm : 1;
    Eina_Bool shell : 1;
-   Eina_Bool output : 1;
-   Eina_Bool seat : 1;
-   Eina_Bool data_device_manager : 1;
-   Eina_Bool subcompositor : 1;
 };
 
 /**
diff --git a/src/lib/ecore_wayland/ecore_wl.c b/src/lib/ecore_wayland/ecore_wl.c
index 8766834..ee614e0 100644
--- a/src/lib/ecore_wayland/ecore_wl.c
+++ b/src/lib/ecore_wayland/ecore_wl.c
@@ -22,7 +22,6 @@ static void _ecore_wl_animator_callback(void *data, struct 
wl_callback *callback
 static Eina_Bool _ecore_wl_animator_window_add(const Eina_Hash *hash 
EINA_UNUSED, const void *key EINA_UNUSED, void *data, void *fdata EINA_UNUSED);
 static void _ecore_wl_signal_exit(void);
 static void _ecore_wl_signal_exit_free(void *data EINA_UNUSED, void *event);
-static void _ecore_wl_init_callback(void *data, struct wl_callback *callback, 
uint32_t serial EINA_UNUSED);
 
 /* local variables */
 static int _ecore_wl_init_count = 0;
@@ -41,11 +40,6 @@ static const struct wl_callback_listener 
_ecore_wl_sync_listener =
    _ecore_wl_sync_callback
 };
 
-static const struct wl_callback_listener _ecore_wl_init_sync_listener =
-{
-   _ecore_wl_init_callback
-};
-
 static const struct wl_callback_listener _ecore_wl_anim_listener = 
 {
    _ecore_wl_animator_callback
@@ -72,40 +66,9 @@ EAPI int ECORE_WL_EVENT_SELECTION_DATA_READY = 0;
 EAPI int ECORE_WL_EVENT_DATA_SOURCE_CANCELLED = 0;
 EAPI int ECORE_WL_EVENT_INTERFACES_BOUND = 0;
 
-static void
-_ecore_wl_init_callback(void *data, struct wl_callback *callback, uint32_t 
serial EINA_UNUSED)
-{
-   Ecore_Wl_Display *ewd = data;
-   Ecore_Wl_Event_Interfaces_Bound *ev;
-
-   wl_callback_destroy(callback);
-   ewd->init_done = EINA_TRUE;
-
-   if (!(ev = calloc(1, sizeof(Ecore_Wl_Event_Interfaces_Bound))))
-     return;
-
-   ev->compositor = (ewd->wl.compositor != NULL);
-   ev->shm = (ewd->wl.shm != NULL);
-   ev->shell = (ewd->wl.shell != NULL);
-   ev->output = (ewd->output != NULL);
-   ev->seat = (ewd->input != NULL);
-   ev->data_device_manager = (ewd->wl.data_device_manager != NULL);
-   ev->subcompositor = (ewd->wl.subcompositor != NULL);
-
-   ecore_event_add(ECORE_WL_EVENT_INTERFACES_BOUND, ev, NULL, NULL);
-}
-
-static void
-_ecore_wl_init_wait(void)
-{
-   while (!_ecore_wl_disp->init_done)
-     wl_display_dispatch(_ecore_wl_disp->wl.display);
-}
-
 EAPI int
 ecore_wl_init(const char *name)
 {
-   struct wl_callback *callback;
    LOGFN(__FILE__, __LINE__, __FUNCTION__);
 
    if (++_ecore_wl_init_count != 1) return _ecore_wl_init_count;
@@ -218,10 +181,6 @@ ecore_wl_init(const char *name)
    _ecore_wl_window_init();
    _ecore_wl_events_init();
 
-   callback = wl_display_sync(_ecore_wl_disp->wl.display);
-   wl_callback_add_listener(callback, &_ecore_wl_init_sync_listener,
-                            _ecore_wl_disp);
-
    return _ecore_wl_init_count;
 }
 
@@ -253,9 +212,6 @@ EAPI struct wl_shm *
 ecore_wl_shm_get(void)
 {
    if (!_ecore_wl_disp) return NULL;
-
-   _ecore_wl_init_wait();
-
    return _ecore_wl_disp->wl.shm;
 }
 
@@ -272,9 +228,6 @@ ecore_wl_globals_get(void)
 {
    if ((!_ecore_wl_disp) || (!_ecore_wl_disp->wl.display)) 
      return NULL;
-
-   _ecore_wl_init_wait();
-
    return &(_ecore_wl_disp->globals);
 }
 
@@ -283,7 +236,6 @@ ecore_wl_registry_get(void)
 {
    if ((!_ecore_wl_disp) || (!_ecore_wl_disp->wl.display)) 
      return NULL;
-
    return _ecore_wl_disp->wl.registry;
 }
 
@@ -297,7 +249,8 @@ ecore_wl_screen_size_get(int *w, int *h)
 
    if ((!_ecore_wl_disp) || (!_ecore_wl_disp->wl.display)) return;
 
-   _ecore_wl_init_wait();
+   if (!_ecore_wl_disp->output)
+     ecore_wl_sync();
 
    if (!_ecore_wl_disp->output) return;
 
@@ -592,6 +545,20 @@ _ecore_wl_cb_handle_global(void *data, struct wl_registry 
*registry, unsigned in
         ewd->wl.data_device_manager =
           wl_registry_bind(registry, id, &wl_data_device_manager_interface, 1);
      }
+
+   if ((ewd->wl.compositor) && (ewd->wl.shm) && (ewd->wl.shell))
+     {
+        Ecore_Wl_Event_Interfaces_Bound *ev;
+
+        if (!(ev = calloc(1, sizeof(Ecore_Wl_Event_Interfaces_Bound))))
+          return;
+
+        ev->compositor = (ewd->wl.compositor != NULL);
+        ev->shm = (ewd->wl.shm != NULL);
+        ev->shell = (ewd->wl.shell != NULL);
+
+        ecore_event_add(ECORE_WL_EVENT_INTERFACES_BOUND, ev, NULL, NULL);
+     }
 }
 
 static void 
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
index 369d7ca..9959c08 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c
@@ -112,6 +112,8 @@ ecore_evas_wayland_egl_new_internal(const char *disp_name, 
unsigned int parent,
         ERR("Failed to initialize Ecore_Wayland");
         return NULL;
      }
+   else if (count >= 1)
+     ecore_wl_display_iterate();
 
    if (!(ee = calloc(1, sizeof(Ecore_Evas))))
      {
diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c 
b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
index 6cf845e..1e77a67 100644
--- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
+++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c
@@ -111,6 +111,8 @@ ecore_evas_wayland_shm_new_internal(const char *disp_name, 
unsigned int parent,
         ERR("Failed to initialize Ecore_Wayland");
         return NULL;
      }
+   else if (count >= 1)
+     ecore_wl_display_iterate();
 
    if (!(ee = calloc(1, sizeof(Ecore_Evas))))
      {

-- 


Reply via email to