elm config - dont leak config if re-loading it again later on
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>
Mon, 2 Apr 2018 07:46:55 +0000 (16:46 +0900)
committerWonki Kim <wonki_.kim@samsung.com>
Tue, 10 Apr 2018 13:25:54 +0000 (22:25 +0900)
delete config object and so on before the relaod

src/lib/elementary/elm_config.c

index 78a16d6..eb53d04 100644 (file)
@@ -1767,6 +1767,19 @@ _efl_config_obj_del(Eo *obj EINA_UNUSED)
 static void
 _config_load(void)
 {
+   if (_efl_config_obj)
+     {
+        efl_del_intercept_set(_efl_config_obj, NULL);
+        efl_loop_unregister(efl_main_loop_get(), EFL_CONFIG_INTERFACE, _efl_config_obj);
+        efl_loop_unregister(efl_main_loop_get(), EFL_CONFIG_GLOBAL_CLASS, _efl_config_obj);
+        ELM_SAFE_FREE(_efl_config_obj, efl_unref);
+        ELM_SAFE_FREE(_elm_config, _config_free);
+        _elm_font_overlays_del_free();
+
+        _elm_config_profile_derived_shutdown();
+
+        ELM_SAFE_FREE(_elm_key_bindings, eina_hash_free);
+     }
    _efl_config_obj = efl_add(EFL_CONFIG_GLOBAL_CLASS, efl_main_loop_get());
    efl_loop_register(efl_main_loop_get(), EFL_CONFIG_INTERFACE, _efl_config_obj);
    efl_loop_register(efl_main_loop_get(), EFL_CONFIG_GLOBAL_CLASS, _efl_config_obj);