jayji pushed a commit to branch master.

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

commit 863077ce9ae50b8918259f9dc6d28d88adf21dee
Author: Jean Guyomarc'h <[email protected]>
Date:   Wed Mar 8 22:09:37 2017 +0100

    ecore_evas_cocoa: use ecore_event to match windows
---
 .../ecore_evas/engines/cocoa/ecore_evas_cocoa.c    | 26 ++++------------------
 1 file changed, 4 insertions(+), 22 deletions(-)

diff --git a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c 
b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
index 6a61a7b..a34969a 100644
--- a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
+++ b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
@@ -29,9 +29,6 @@
 #endif
 
 static int                      _ecore_evas_init_count = 0;
-// FIXME: In case we have a lot of windows per app, we should probably use 
another container
-// like a rbtree or a dictionnary-based container
-static Eina_List                *ecore_evases = NULL;
 static Ecore_Event_Handler      *ecore_evas_event_handlers[4];
 
 static const char *_iface_name = "opengl_cocoa";
@@ -69,23 +66,12 @@ _ecore_evas_cocoa_render(Ecore_Evas *ee)
    return (updates) ? 1 : rend;
 }
 
-
-static Ecore_Evas *
+static inline Ecore_Evas *
 _ecore_evas_cocoa_match(Ecore_Cocoa_Object *cocoa_win)
 {
-   Eina_List *it;
-   Ecore_Evas *ee;
-
-   DBG("");
-   EINA_LIST_FOREACH(ecore_evases, it, ee)
-     {
-        if (ecore_cocoa_window_get((Ecore_Cocoa_Window *)ee->prop.window) == 
cocoa_win)
-          return ee;
-     }
-   return NULL;
+   return ecore_event_window_match((Ecore_Window)cocoa_win);
 }
 
-
 static Eina_Bool
 _ecore_evas_cocoa_event_got_focus(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event)
 {
@@ -219,16 +205,12 @@ _ecore_evas_cocoa_init(void)
 static int
 _ecore_evas_cocoa_shutdown(void)
 {
-   Ecore_Evas *ee;
    DBG("");
    _ecore_evas_init_count--;
    if (_ecore_evas_init_count == 0)
      {
         unsigned int i;
 
-        EINA_LIST_FREE(ecore_evases, ee)
-          _ecore_evas_free(ee);
-
         for (i = 0; i < EINA_C_ARRAY_LENGTH(ecore_evas_event_handlers); i++)
           ecore_event_handler_del(ecore_evas_event_handlers[i]);
 
@@ -241,7 +223,8 @@ static void
 _ecore_evas_cocoa_free(Ecore_Evas *ee)
 {
    DBG("");
-   ecore_evases = eina_list_remove(ecore_evases, ee);
+
+   ecore_cocoa_window_free((Ecore_Cocoa_Window *)ee->prop.window);
    ecore_event_window_unregister(ee->prop.window);
    _ecore_evas_cocoa_shutdown();
    ecore_cocoa_shutdown();
@@ -658,7 +641,6 @@ ecore_evas_cocoa_new_internal(Ecore_Cocoa_Window *parent 
EINA_UNUSED, int x, int
    _ecore_event_window_direct_cb_set(ee->prop.window, 
_ecore_evas_input_direct_cb);
 
    evas_event_feed_mouse_in(ee->evas, (unsigned int)((unsigned long 
long)(ecore_time_get() * 1000.0) & 0xffffffff), NULL);
-   ecore_evases = eina_list_append(ecore_evases, ee);
 
    return ee;
 

-- 


Reply via email to