evas_engine: add to free evas engine resource
authorWonsik, Jung <sidein@samsung.com>
Mon, 18 Dec 2017 12:28:05 +0000 (21:28 +0900)
committerWonki Kim <wonki_.kim@samsung.com>
Wed, 27 Dec 2017 08:58:44 +0000 (17:58 +0900)
Add to free evas engine resourece before free evas and initialize ecore_evas's driver

@tizen_only
Change-Id: Ic097f3145f6530d7b8ddf960eca6ba52b265d065

13 files changed:
src/lib/ecore_evas/ecore_evas.c
src/lib/ecore_evas/ecore_evas_buffer.c
src/lib/ecore_evas/ecore_evas_ews.c
src/lib/ecore_evas/ecore_evas_private.h
src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c
src/modules/ecore_evas/engines/drm/ecore_evas_drm.c
src/modules/ecore_evas/engines/extn/ecore_evas_extn.c
src/modules/ecore_evas/engines/fb/ecore_evas_fb.c
src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c
src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c
src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c
src/modules/ecore_evas/engines/win32/ecore_evas_win32.c
src/modules/ecore_evas/engines/x/ecore_evas_x.c

index e22f033..5dd9eb3 100644 (file)
@@ -3558,6 +3558,10 @@ _ecore_evas_free(Ecore_Evas *ee)
    efl_event_callback_array_del(ee->evas, _ecore_evas_device_cbs(), ee);
    eina_hash_free(ee->prop.cursors);
    ee->prop.cursors = NULL;
+   //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+   if (ee->engine.func->fn_evas_engine_rsc_free)
+     ee->engine.func->fn_evas_engine_rsc_free(ee);
+   //
    evas_free(ee->evas);
    ee->evas = NULL;
    ECORE_MAGIC_SET(ee, ECORE_MAGIC_NONE);
index dcb9fa1..13422e8 100644 (file)
@@ -706,6 +706,9 @@ static Ecore_Evas_Engine_Func _ecore_buffer_engine_func =
      NULL, //fn_callback_device_mouse_out_set
      NULL, //fn_pointer_device_xy_get
      _ecore_evas_buffer_prepare,
+     NULL, //fn_last_tick_get
+     //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+     NULL, //fn_evas_engine_rsc_free
 };
 
 static void *
index ee40f00..f394a44 100644 (file)
@@ -679,6 +679,9 @@ static const Ecore_Evas_Engine_Func _ecore_ews_engine_func =
      NULL, //fn_callback_device_mouse_out_set
      NULL, //fn_pointer_device_xy_get
      _ecore_evas_ews_prepare,
+     NULL, //fn_last_tick_get
+     //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+     NULL, //fn_evas_engine_rsc_free
 };
 
 void
index 694d136..baec815 100644 (file)
@@ -171,6 +171,9 @@ struct _Ecore_Evas_Engine_Func
    Eina_Bool (*fn_prepare)(Ecore_Evas *ee);
 
    double (*fn_last_tick_get)(Ecore_Evas *ee);
+
+   //TIZEN_ONLY : Evas Engine Resource Free
+   void (*fn_evas_engine_rsc_free) (Ecore_Evas *ee);
 };
 
 struct _Ecore_Evas_Interface
index 75ba1da..3a2d70e 100644 (file)
@@ -510,6 +510,8 @@ static Ecore_Evas_Engine_Func _ecore_cocoa_engine_func =
     NULL, //fn_pointer_device_xy_get
     NULL, //fn_prepare
     NULL, //fn_last_tick_get
+    //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+    NULL, //fn_evas_engine_rsc_free
   };
 
 static Ecore_Cocoa_Window *
index 73e3a45..8882543 100644 (file)
@@ -923,6 +923,8 @@ static Ecore_Evas_Engine_Func _ecore_evas_drm_engine_func =
    NULL, //fn_pointer_device_xy_get
    NULL, //fn_prepare
    _drm_last_tick_get,
+   //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+   NULL, //fn_evas_engine_rsc_free
 };
 
 static Ecore_Evas *
index fd4fa79..19fa037 100644 (file)
@@ -929,6 +929,8 @@ static const Ecore_Evas_Engine_Func _ecore_extn_plug_engine_func =
    NULL, //fn_pointer_device_xy_get
    NULL, //fn_prepare
    NULL, //fn_last_tick_get
+   //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+   NULL, //fn_evas_engine_rsc_free
 };
 
 static Eina_Bool
@@ -2104,6 +2106,9 @@ static const Ecore_Evas_Engine_Func _ecore_extn_socket_engine_func =
    NULL, //fn_callback_device_mouse_out_set
    NULL, //fn_pointer_device_xy_get
    _ecore_evas_extn_socket_prepare,
+   NULL, //fn_last_tick_get
+   //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+   NULL, //fn_evas_engine_rsc_free
 };
 
 EAPI Ecore_Evas *
index 7dd2ddc..611ce30 100644 (file)
@@ -563,6 +563,8 @@ static Ecore_Evas_Engine_Func _ecore_fb_engine_func =
      NULL, //fn_pointer_device_xy_get
      NULL, //fn_prepare
      NULL, //fn_last_tick_get
+     //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+     NULL, //fn_evas_engine_rsc_free
 };
 
 EAPI Ecore_Evas *
index a6ddee9..6016aef 100644 (file)
@@ -455,6 +455,8 @@ static Ecore_Evas_Engine_Func _ecore_sdl_engine_func =
    NULL, //fn_pointer_device_xy_get
    NULL, //fn_prepare
    NULL, //fn_last_tick_get
+   //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+   NULL, //fn_evas_engine_rsc_free
 };
 
 static Ecore_Evas*
index a28edc9..580b38d 100755 (executable)
@@ -774,7 +774,22 @@ static Ecore_Evas_Engine_Func _ecore_tbm_engine_func =
      NULL, // wm_rot_manual_rotation_done_set
      NULL, // wm_rot_manual_rotation_done
 
-     NULL  // aux_hints_set
+     NULL, // aux_hints_set
+
+     NULL, // fn_animator_register
+     NULL, // fn_animator_unregister
+
+     NULL, // fn_evas_changed
+     NULL, //fn_focus_device_set
+     NULL, //fn_callback_focus_device_in_set
+     NULL, //fn_callback_focus_device_out_set
+     NULL, //fn_callback_device_mouse_in_set
+     NULL, //fn_callback_device_mouse_out_set
+     NULL, //fn_pointer_device_xy_get
+     NULL, //fn_prepare
+     NULL, //fn_last_tick_get
+     //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+     NULL, //fn_evas_engine_rsc_free
 };
 
 static void *
index ecc736c..87b6ef4 100644 (file)
@@ -1784,6 +1784,7 @@ _ecore_evas_wl_common_free(Ecore_Evas *ee)
 
    if (!ee) return;
 
+#if 0
    // TIZEN_ONLY(20171120) : evas sw tbm_buf backend
    if (!strcmp(ee->driver, "wayland_shm"))
      {
@@ -1795,6 +1796,7 @@ _ecore_evas_wl_common_free(Ecore_Evas *ee)
              wayland_tbm_client_deinit(einfo->info.tbm_client);
          }
      }
+#endif
 
    wdata = ee->engine.data;
    ee_list = eina_list_remove(ee_list, ee);
@@ -3085,6 +3087,25 @@ _ecore_evas_wl_common_output_transform_register(Ecore_Evas *ee)
 }
 //
 
+//TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+static void
+_ecore_evas_wl_common_evas_engine_rsc_free(Ecore_Evas *ee)
+{
+    if (!ee) return;
+
+    // evas sw tbm_buf backend
+    if (!strcmp(ee->driver, "wayland_shm"))
+      {
+        Evas_Engine_Info_Wayland *einfo;
+        einfo = (Evas_Engine_Info_Wayland *)evas_engine_info_get(ee->evas);
+        if (einfo && einfo->info.tbm_client)
+          {
+            if (_ecore_evas_wl_init_count == 1)
+              wayland_tbm_client_deinit(einfo->info.tbm_client);
+          }
+      }
+}
+
 static Eina_Bool
 _ee_cb_sync_done(void *data, int type EINA_UNUSED, void *event EINA_UNUSED)
 {
@@ -3286,6 +3307,8 @@ static Ecore_Evas_Engine_Func _ecore_wl_engine_func =
    _ecore_evas_wl_common_pointer_device_xy_get,
    _ecore_evas_wl_common_prepare,
    NULL, //fn_last_tick_get
+   //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+   _ecore_evas_wl_common_evas_engine_rsc_free,
 };
 
 Ecore_Evas *
index 46c795b..e15ed08 100644 (file)
@@ -1306,6 +1306,8 @@ static Ecore_Evas_Engine_Func _ecore_win32_engine_func =
      NULL, //fn_pointer_device_xy_get
      NULL, //fn_prepare
      NULL, //fn_last_tick_get
+     //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+     NULL, //fn_evas_engine_rsc_free
 };
 
 #endif /* BUILD_ECORE_EVAS_WIN32 */
index 88779a2..b7784e7 100644 (file)
@@ -3813,6 +3813,8 @@ static Ecore_Evas_Engine_Func _ecore_x_engine_func =
    NULL, //fn_pointer_device_xy_get
    NULL, //fn_prepare
    NULL, //fn_last_tick_get
+   //TIZEN_ONLY(20171218) : Add to free evas engine rsc before free evas
+   NULL, //fn_evas_engine_rsc_free
 };
 
 /*