nikawhite pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=d2b0190abad9a5548b568d0e9d8ef873e3dcb66c
commit d2b0190abad9a5548b568d0e9d8ef873e3dcb66c Author: Mykyta Biliavskyi <[email protected]> Date: Tue Aug 9 21:05:36 2016 +0300 Project manager: change signature of progress_end functions. This need to avoid usage static structure 'worker' inside project manager. Now after finishing any routine inside project manager - variable project will be returned back into main thread. --- src/bin/project_manager/project_manager.c | 18 +++--------------- src/bin/project_manager/project_manager.h | 23 +---------------------- src/bin/project_manager/project_manager_private.h | 1 + src/bin/ui/project_close.c | 2 +- src/bin/ui/project_common.c | 2 +- src/bin/ui/project_common.h | 2 +- src/bin/ui/tab_home_common.c | 10 +++++----- src/bin/ui/tab_home_import_edc.c | 4 ++-- src/bin/ui/tab_home_import_edj.c | 4 ++-- src/bin/ui/tab_home_new.c | 4 ++-- src/bin/ui/tabs_private.h | 2 +- 11 files changed, 20 insertions(+), 52 deletions(-) diff --git a/src/bin/project_manager/project_manager.c b/src/bin/project_manager/project_manager.c index 5664df0..73c06ab 100644 --- a/src/bin/project_manager/project_manager.c +++ b/src/bin/project_manager/project_manager.c @@ -133,12 +133,14 @@ _end_send(void *data) PM_Project_End_Cb func; Project_Thread *ptd = (Project_Thread *)data; PM_Project_Result result; + Project *project; void *udata; /** Copy the links to callback and meesage, to fast release worker resource. */ func = ptd->func_end; result = ptd->result; udata = ptd->data; + project = ptd->project; ecore_event_handler_del(ptd->del_handler); ecore_event_handler_del(ptd->error_handler); ecore_event_handler_del(ptd->data_handler); @@ -150,7 +152,7 @@ _end_send(void *data) } free(ptd); - func(udata, result); + func(udata, result, project); } Eina_Bool @@ -193,7 +195,6 @@ _gm_group_load_cancel_cb(void *data, eina_lock_release(&ftd->mutex); TODO("Remove static worker from this module"); - worker.project = ptd->project; free(ftd); _end_send(ptd); } @@ -210,7 +211,6 @@ _gm_group_load_end_cb(void *data, eina_lock_release(&ftd->mutex); TODO("Remove static worker from this module"); - worker.project = ptd->project; free(ftd); _end_send(ptd); } @@ -459,18 +459,6 @@ pm_project_thread_free() return true; } -PM_Project_Result -pm_project_thread_result_get(void) -{ - return worker.result; -} - -Project * -pm_project_thread_project_get() -{ - return worker.project; -} - void pm_project_open(const char *path, PM_Project_Progress_Cb func_progress, diff --git a/src/bin/project_manager/project_manager.h b/src/bin/project_manager/project_manager.h index d7e1183..81f3fe0 100644 --- a/src/bin/project_manager/project_manager.h +++ b/src/bin/project_manager/project_manager.h @@ -179,7 +179,7 @@ typedef Eina_Bool * @ingroup ProjectManager */ typedef void -(* PM_Project_End_Cb)(void *data, PM_Project_Result result); +(* PM_Project_End_Cb)(void *data, PM_Project_Result result, Project *project); /** * Free the Project Thread object. @@ -192,16 +192,6 @@ Eina_Bool pm_project_thread_free(void); /** - * Get project result. - * - * @return project thread result. - * - * @ingroup ProjectManager - */ -PM_Project_Result -pm_project_thread_result_get(void); - -/** * Create a new project which based on the imported edj file. * * @param name The name of new project; @@ -255,17 +245,6 @@ pm_project_import_edc(const char *name, const void *data) EINA_ARG_NONNULL(1, 2, 3, 4); /** - * Get the Project object from thread. If thread not finished, function will - * return NULL. - * - * @return Project object, or NULL if thread not finished or finished with error. - * - * @ingroup ProjectManager - */ -Project * -pm_project_thread_project_get(); - -/** * Open Eflete project. * * @param path The path to the Eflete project file. diff --git a/src/bin/project_manager/project_manager_private.h b/src/bin/project_manager/project_manager_private.h index 0a223d4..141f3ab 100644 --- a/src/bin/project_manager/project_manager_private.h +++ b/src/bin/project_manager/project_manager_private.h @@ -31,6 +31,7 @@ #define PROJECT_KEY_LICENSE "edje/license" #define PROJECT_KEY_COMMENT "edje/comment" + /* A handler for Project process. */ typedef struct { diff --git a/src/bin/ui/project_close.c b/src/bin/ui/project_close.c index 792da24..68a8363 100644 --- a/src/bin/ui/project_close.c +++ b/src/bin/ui/project_close.c @@ -31,7 +31,7 @@ _progress_print(void *data __UNUSED__, Eina_Stringshare *progress_string) } static void -_progress_end(void *data __UNUSED__, PM_Project_Result result) +_progress_end(void *data __UNUSED__, PM_Project_Result result, Project *project __UNUSED__) { switch (result) diff --git a/src/bin/ui/project_common.c b/src/bin/ui/project_common.c index 88eb6ce..3be3043 100644 --- a/src/bin/ui/project_common.c +++ b/src/bin/ui/project_common.c @@ -73,7 +73,7 @@ progress_print(void *data __UNUSED__, Eina_Stringshare *progress_string) } void -progress_end(void *data __UNUSED__, PM_Project_Result result) +progress_end(void *data __UNUSED__, PM_Project_Result result, Project *project __UNUSED__) { switch (result) { diff --git a/src/bin/ui/project_common.h b/src/bin/ui/project_common.h index 6a9cdcf..c5c211a 100644 --- a/src/bin/ui/project_common.h +++ b/src/bin/ui/project_common.h @@ -27,6 +27,6 @@ Eina_Bool progress_print(void *data, Eina_Stringshare *progress_string); void -progress_end(void *data, PM_Project_Result result); +progress_end(void *data, PM_Project_Result result, Project *project); #endif /* PROJECT_COMMON_H */ diff --git a/src/bin/ui/tab_home_common.c b/src/bin/ui/tab_home_common.c index d5001d8..580e54a 100644 --- a/src/bin/ui/tab_home_common.c +++ b/src/bin/ui/tab_home_common.c @@ -128,20 +128,20 @@ _group_copy(Project *pro, Eina_List *widgets) } void -_tabs_progress_end(void *data, PM_Project_Result result) +_tabs_progress_end(void *data, PM_Project_Result result, Project *project) { Meta_Data_Controls *meta = (Meta_Data_Controls *)data; if (PM_PROJECT_LOCKED == result) { - progress_end(data, result); + progress_end(data, result, project); popup_want_action(_("File is locked"), _("File locked by another application"), NULL, BTN_OK, NULL, NULL); return; } if (PM_PROJECT_ERROR == result) { - progress_end(data, result); + progress_end(data, result, project); popup_want_action(_("File opening error"), _("Unknown problem with file appeared.<br>" "(wrong file, filesystem error, no memory, etc)"), NULL, BTN_OK, NULL, NULL); @@ -149,7 +149,7 @@ _tabs_progress_end(void *data, PM_Project_Result result) } if (PM_PROJECT_SUCCESS != result) return; - ap.project = pm_project_thread_project_get(); + ap.project = project; assert(ap.project); meta_controls_data_save(meta); @@ -165,7 +165,7 @@ _tabs_progress_end(void *data, PM_Project_Result result) _tab_open_project_recents_update(); evas_object_smart_callback_call(ap.win, SIGNAL_PROJECT_OPENED, NULL); - progress_end(data, result); + progress_end(data, result, project); } void diff --git a/src/bin/ui/tab_home_import_edc.c b/src/bin/ui/tab_home_import_edc.c index 5bb12d4..1208f4d 100644 --- a/src/bin/ui/tab_home_import_edc.c +++ b/src/bin/ui/tab_home_import_edc.c @@ -356,7 +356,7 @@ _progress_print(void *data, Eina_Stringshare *progress_string) } static void -_progress_end(void *data, PM_Project_Result result) +_progress_end(void *data, PM_Project_Result result, Project *project) { if (PM_PROJECT_ERROR == result) popup_log_message_helper(eina_strbuf_string_get(tab_edc.log)); @@ -375,7 +375,7 @@ _progress_end(void *data, PM_Project_Result result) elm_entry_entry_set(tab_edc.meta.licenses, NULL); elm_entry_entry_set(tab_edc.meta.comment, N_("Created with Eflete!")); } - _tabs_progress_end(data, result); + _tabs_progress_end(data, result, project); } static Eina_Bool diff --git a/src/bin/ui/tab_home_import_edj.c b/src/bin/ui/tab_home_import_edj.c index dd46506..03a1668 100644 --- a/src/bin/ui/tab_home_import_edj.c +++ b/src/bin/ui/tab_home_import_edj.c @@ -411,7 +411,7 @@ _contracted_cb(void *data __UNUSED__, } static void -_progress_end(void *data, PM_Project_Result result) +_progress_end(void *data, PM_Project_Result result, Project *project) { if (PM_PROJECT_SUCCESS == result) { @@ -424,7 +424,7 @@ _progress_end(void *data, PM_Project_Result result) elm_entry_entry_set(tab_edj.meta.comment, N_("Created with Eflete!")); } - _tabs_progress_end(data, result); + _tabs_progress_end(data, result, project); } static Eina_Bool diff --git a/src/bin/ui/tab_home_new.c b/src/bin/ui/tab_home_new.c index fd279c3..f8f245b 100644 --- a/src/bin/ui/tab_home_new.c +++ b/src/bin/ui/tab_home_new.c @@ -430,7 +430,7 @@ _edc_code_generate(Eina_Stringshare *path) /* SPLASH */ static void -_progress_end(void *data, PM_Project_Result result) +_progress_end(void *data, PM_Project_Result result, Project *project) { if (PM_PROJECT_SUCCESS == result) { @@ -442,7 +442,7 @@ _progress_end(void *data, PM_Project_Result result) elm_entry_entry_set(tab_new.meta.comment, N_("Created with Eflete!")); _checks_set(false); } - _tabs_progress_end(data, result); + _tabs_progress_end(data, result, project); } static Eina_Bool diff --git a/src/bin/ui/tabs_private.h b/src/bin/ui/tabs_private.h index a717d41..223ca01 100644 --- a/src/bin/ui/tabs_private.h +++ b/src/bin/ui/tabs_private.h @@ -77,7 +77,7 @@ Eina_Bool entry_path_set(void *data, Evas_Object *obj, void *event_info); void -_tabs_progress_end(void *data, PM_Project_Result result); +_tabs_progress_end(void *data, PM_Project_Result result, Project *project); void _tab_default_focus(void *data, Evas *e, Evas_Object *obj, void *event_info); --
