rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=584421ea4b2cd4879e8c48275746b2b06d3519b4
commit 584421ea4b2cd4879e8c48275746b2b06d3519b4 Author: Vyacheslav Reutskiy <[email protected]> Date: Thu Sep 22 17:47:06 2016 +0300 project manager: unify the cleanup process data Change-Id: If0f11c2d43a4f0889dae1deb35140bb9cc20260d --- src/bin/project_manager/project_manager2.c | 82 +++++++++++++++++++----------- 1 file changed, 53 insertions(+), 29 deletions(-) diff --git a/src/bin/project_manager/project_manager2.c b/src/bin/project_manager/project_manager2.c index ee027db..10bd201 100644 --- a/src/bin/project_manager/project_manager2.c +++ b/src/bin/project_manager/project_manager2.c @@ -72,8 +72,6 @@ struct _Project_Process_Data Eina_Tmpstr *tmp_dirname; /** The group, which source should be exported into edc. */ Group2 *group; - /** Temporary path, for deliver works path between pipes and threads */ - Eina_Stringshare *tmp_path; /** Handlers for monitoring events from exe pipes. */ Ecore_Event_Handler *data_handler; @@ -85,6 +83,8 @@ struct _Project_Process_Data }; typedef struct _Project_Process_Data Project_Process_Data; + + static void _project_descriptor_init(Project_Process_Data *ppd) { @@ -113,6 +113,50 @@ _pm_project_descriptor_shutdown(Project_Process_Data *ppd) } static void +_ecore_event_handlers_del(Project_Process_Data *ppd) +{ + assert(ppd != NULL); + + if (ppd->data_handler) + { + ecore_event_handler_del(ppd->data_handler); + ppd->data_handler = NULL; + } + if (ppd->error_handler) + { + ecore_event_handler_del(ppd->error_handler); + ppd->error_handler = NULL; + } + if (ppd->del_handler) + { + ecore_event_handler_del(ppd->del_handler); + ppd->del_handler = NULL; + } +} + +static void +_project_process_data_cleanup(Project_Process_Data *ppd) +{ + assert(ppd != NULL); + + if (ppd->name) eina_stringshare_del(ppd->name); + if (ppd->path) eina_stringshare_del(ppd->path); + if (ppd->edj) eina_stringshare_del(ppd->edj); + if (ppd->edc) eina_stringshare_del(ppd->edc); + if (ppd->build_options) eina_stringshare_del(ppd->build_options); + + if (ppd->tmp_dirname) + { + ecore_file_recursive_rm(ppd->tmp_dirname); + eina_tmpstr_del(ppd->tmp_dirname); + } + _ecore_event_handlers_del(ppd); + _pm_project_descriptor_shutdown(ppd); + + free(ppd); +} + +static void _project_special_group_add(Project *project) { Eina_List *groups; @@ -309,17 +353,8 @@ _end_send(void *data) result = ppd->result; udata = ppd->data; project = ppd->project; - ecore_event_handler_del(ppd->del_handler); - ecore_event_handler_del(ppd->error_handler); - ecore_event_handler_del(ppd->data_handler); - if (ppd->tmp_dirname != NULL) - { - ecore_file_recursive_rm(ppd->tmp_dirname); - eina_tmpstr_del(ppd->tmp_dirname); - } - - free(ppd); + _project_process_data_cleanup(ppd); func(udata, result, project); } @@ -604,8 +639,7 @@ pm_project_open(const char *path, if (!_project_open_internal(ppd)) { - eina_stringshare_del(ppd->path); - free(ppd); + _project_process_data_cleanup(ppd); } free(spath); @@ -623,9 +657,7 @@ _edje_pick_finish_handler(void *data, eina_stringshare_del(ppd->path); ppd->path = eina_stringshare_ref(ppd->project->pro_path); - ecore_event_handler_del(ppd->del_handler); - ecore_event_handler_del(ppd->error_handler); - ecore_event_handler_del(ppd->data_handler); + _ecore_event_handlers_del(ppd); ecore_file_cp(ppd->edj, ppd->project->saved_edj); if (!_project_open_internal(ppd)) @@ -741,8 +773,7 @@ _project_import_edj(Project_Process_Data *ppd) _project_dummy_sample_add(ppd->project); if (!_project_open_internal(ppd)) { - eina_stringshare_del(ppd->path); - free(ppd); + _project_process_data_cleanup(ppd); return; } } @@ -803,10 +834,7 @@ _finish_from_edje_cc(void *data, snprintf(buf, sizeof(buf), "Data for importing prepare"); if (ppd->func_progress) ppd->func_progress(NULL, buf); } - - ecore_event_handler_del(ppd->del_handler); - ecore_event_handler_del(ppd->error_handler); - ecore_event_handler_del(ppd->data_handler); + _ecore_event_handlers_del(ppd); _project_import_edj(ppd); @@ -1109,9 +1137,7 @@ _develop_export_finish_handler(void *data, Ecore_Exe_Event_Del *edje_pick_exit = (Ecore_Exe_Event_Del *)event_info; char buf[PATH_MAX]; - ecore_event_handler_del(ppd->del_handler); - ecore_event_handler_del(ppd->error_handler); - ecore_event_handler_del(ppd->data_handler); + _ecore_event_handlers_del(ppd); if (edje_pick_exit->exit_code != 0) { @@ -1208,9 +1234,7 @@ _release_export_finish_handler(void *data, Eina_Strbuf *buf; char folder[PATH_MAX]; - ecore_event_handler_del(ppd->del_handler); - ecore_event_handler_del(ppd->error_handler); - ecore_event_handler_del(ppd->data_handler); + _ecore_event_handlers_del(ppd); buf = eina_strbuf_new(); eina_strbuf_append_printf(buf, "edje_cc -v %s %s", ppd->edc, ppd->edj); --
