From 07a103fcda513ea8f218e92c403e578c7fef6353 Mon Sep 17 00:00:00 2001 From: "Wonsik, Jung" Date: Mon, 18 Dec 2017 21:28:05 +0900 Subject: [PATCH] evas_engine: add to free evas engine resource Add to free evas engine resourece before free evas and initialize ecore_evas's driver @tizen_only Change-Id: Ic097f3145f6530d7b8ddf960eca6ba52b265d065 --- src/lib/ecore_evas/ecore_evas.c | 4 ++++ src/lib/ecore_evas/ecore_evas_buffer.c | 3 +++ src/lib/ecore_evas/ecore_evas_ews.c | 3 +++ src/lib/ecore_evas/ecore_evas_private.h | 3 +++ .../ecore_evas/engines/cocoa/ecore_evas_cocoa.c | 2 ++ .../ecore_evas/engines/drm/ecore_evas_drm.c | 2 ++ .../ecore_evas/engines/extn/ecore_evas_extn.c | 5 +++++ src/modules/ecore_evas/engines/fb/ecore_evas_fb.c | 2 ++ .../ecore_evas/engines/sdl/ecore_evas_sdl.c | 2 ++ .../ecore_evas/engines/tbm/ecore_evas_tbm.c | 17 +++++++++++++++- .../engines/wayland/ecore_evas_wayland_common.c | 23 ++++++++++++++++++++++ .../ecore_evas/engines/win32/ecore_evas_win32.c | 2 ++ src/modules/ecore_evas/engines/x/ecore_evas_x.c | 2 ++ 13 files changed, 69 insertions(+), 1 deletion(-) diff --git a/src/lib/ecore_evas/ecore_evas.c b/src/lib/ecore_evas/ecore_evas.c index e22f033..5dd9eb3 100644 --- a/src/lib/ecore_evas/ecore_evas.c +++ b/src/lib/ecore_evas/ecore_evas.c @@ -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); diff --git a/src/lib/ecore_evas/ecore_evas_buffer.c b/src/lib/ecore_evas/ecore_evas_buffer.c index dcb9fa1..13422e8 100644 --- a/src/lib/ecore_evas/ecore_evas_buffer.c +++ b/src/lib/ecore_evas/ecore_evas_buffer.c @@ -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 * diff --git a/src/lib/ecore_evas/ecore_evas_ews.c b/src/lib/ecore_evas/ecore_evas_ews.c index ee40f00..f394a44 100644 --- a/src/lib/ecore_evas/ecore_evas_ews.c +++ b/src/lib/ecore_evas/ecore_evas_ews.c @@ -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 diff --git a/src/lib/ecore_evas/ecore_evas_private.h b/src/lib/ecore_evas/ecore_evas_private.h index 694d136..baec815 100644 --- a/src/lib/ecore_evas/ecore_evas_private.h +++ b/src/lib/ecore_evas/ecore_evas_private.h @@ -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 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 75ba1da..3a2d70e 100644 --- a/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c +++ b/src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c @@ -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 * diff --git a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c index 73e3a45..8882543 100644 --- a/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c +++ b/src/modules/ecore_evas/engines/drm/ecore_evas_drm.c @@ -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 * diff --git a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c index fd4fa79..19fa037 100644 --- a/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c +++ b/src/modules/ecore_evas/engines/extn/ecore_evas_extn.c @@ -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 * diff --git a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c index 7dd2ddc..611ce30 100644 --- a/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c +++ b/src/modules/ecore_evas/engines/fb/ecore_evas_fb.c @@ -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 * diff --git a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c index a6ddee9..6016aef 100644 --- a/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c +++ b/src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c @@ -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* diff --git a/src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c b/src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c index a28edc9..580b38d 100755 --- a/src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c +++ b/src/modules/ecore_evas/engines/tbm/ecore_evas_tbm.c @@ -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 * diff --git a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c index ecc736c..87b6ef4 100644 --- a/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c +++ b/src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c @@ -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 * diff --git a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c index 46c795b..e15ed08 100644 --- a/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c +++ b/src/modules/ecore_evas/engines/win32/ecore_evas_win32.c @@ -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 */ diff --git a/src/modules/ecore_evas/engines/x/ecore_evas_x.c b/src/modules/ecore_evas/engines/x/ecore_evas_x.c index 88779a2..b7784e7 100644 --- a/src/modules/ecore_evas/engines/x/ecore_evas_x.c +++ b/src/modules/ecore_evas/engines/x/ecore_evas_x.c @@ -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 }; /* -- 2.7.4