rimmed pushed a commit to branch master. http://git.enlightenment.org/tools/eflete.git/commit/?id=6d38d6600d840153adb92e3f4a9b45269ba48a40
commit 6d38d6600d840153adb92e3f4a9b45269ba48a40 Author: Vyacheslav Reutskiy <v.reuts...@samsung.com> Date: Thu Jul 30 09:08:28 2015 +0300 Project manager: move out the mutex hold from PROCESS_SEND Change-Id: If11dff3b0f6c1cb27f52e71b99d6227dd9e9f6e2 --- src/bin/project_manager/project_manager.c | 46 +++++++++++++++++++------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/src/bin/project_manager/project_manager.c b/src/bin/project_manager/project_manager.c index 2983909..558d678 100644 --- a/src/bin/project_manager/project_manager.c +++ b/src/bin/project_manager/project_manager.c @@ -89,11 +89,9 @@ const char *top_levels[] = { "collections", { \ if (worker->func_progress) \ { \ - WORKER_LOCK_TAKE; \ - if (worker->message) \ - eina_stringshare_del(worker->message); \ - worker->message = eina_stringshare_printf(FMT, ## __VA_ARGS__); \ - WORKER_LOCK_RELEASE; \ + if (worker->message) \ + eina_stringshare_del(worker->message); \ + worker->message = eina_stringshare_printf(FMT, ## __VA_ARGS__); \ ecore_main_loop_thread_safe_call_async(_progress_send, worker); \ } \ } @@ -336,9 +334,9 @@ _project_edj_file_copy(Project_Thread *worker) WORKER_LOCK_TAKE; src = eina_stringshare_ref(worker->edj); dst = eina_stringshare_ref(worker->project->saved_edj); + PROGRESS_SEND(_("Importing...")); WORKER_LOCK_RELEASE; - PROGRESS_SEND(_("Importing...")); - result = ecore_file_cp(src, dst); + result = ecore_file_cp(src, dst); DBG("Copy the .edj file to project folder."); eina_stringshare_del(src); eina_stringshare_del(dst); @@ -481,7 +479,9 @@ _project_import_edj(void *data, assert(worker != NULL); THREAD_TESTCANCEL; - PROGRESS_SEND("%s", _("Creating a specifiec file and folders...")); + WORKER_LOCK_TAKE; + PROGRESS_SEND("%s", _("Creating a specifiec file and folders...")); + WORKER_LOCK_RELEASE; worker->project = _project_files_create(worker); TODO("Add correct error handling here (if project == NULL). Probably we should add negative TC where directory already exist"); THREAD_TESTCANCEL; @@ -489,7 +489,9 @@ _project_import_edj(void *data, worker->project->pro_path = eina_stringshare_printf("%s/%s/%s.pro", worker->path, worker->name, worker->name); WORKER_LOCK_RELEASE; THREAD_TESTCANCEL; - PROGRESS_SEND("%s", _("Importing...")); + WORKER_LOCK_TAKE; + PROGRESS_SEND("%s", _("Importing...")); + WORKER_LOCK_RELEASE; _project_edj_file_copy(worker); _copy_meta_data_to_pro(worker); WORKER_LOCK_TAKE; @@ -550,7 +552,9 @@ _exe_data(void *data, for (i = 0; ev->lines[i].line; i++) { DBG("%s", ev->lines[i].line); - PROGRESS_SEND("%s", ev->lines[i].line); + WORKER_LOCK_TAKE; + PROGRESS_SEND("%s", ev->lines[i].line); + WORKER_LOCK_RELEASE; } } @@ -610,14 +614,18 @@ _project_import_edc(void *data, } THREAD_TESTCANCEL; - PROGRESS_SEND("%s", _("Creating a specifiec file and folders...")); + WORKER_LOCK_TAKE; + PROGRESS_SEND("%s", _("Creating a specifiec file and folders...")); + WORKER_LOCK_RELEASE; worker->project = _project_files_create(worker); TODO("Add correct error handling here (if project == NULL). Probably we should add negative TC where directory already exist"); WORKER_LOCK_TAKE; worker->project->pro_path = eina_stringshare_printf("%s/%s/%s.pro", worker->path, worker->name, worker->name); WORKER_LOCK_RELEASE; THREAD_TESTCANCEL; - PROGRESS_SEND("%s", _("Importing...")); + WORKER_LOCK_TAKE; + PROGRESS_SEND("%s", _("Importing...")); + WORKER_LOCK_RELEASE; _project_edj_file_copy(worker); ecore_file_recursive_rm(tmp_dirname); eina_tmpstr_del(tmp_dirname); @@ -793,7 +801,9 @@ _project_save(void *data, edje_edit_obj = worker->project->global_object; - PROGRESS_SEND("Saving..."); + WORKER_LOCK_TAKE; + PROGRESS_SEND("Saving..."); + WORKER_LOCK_RELEASE; ecore_thread_main_loop_begin(); WORKER_LOCK_TAKE; pm_save_to_dev(worker->project, NULL, true); @@ -840,7 +850,9 @@ _project_save(void *data, WORKER_LOCK_RELEASE; ecore_thread_main_loop_end(); - PROGRESS_SEND("Saved."); + WORKER_LOCK_TAKE; + PROGRESS_SEND("Saved."); + WORKER_LOCK_RELEASE; END_SEND(PM_PROJECT_SUCCESS); return NULL; } @@ -1577,17 +1589,15 @@ _develop_export(void *data, assert(worker != NULL); - PROGRESS_SEND(_("Export edj...")); WORKER_LOCK_TAKE; - + PROGRESS_SEND(_("Export edj...")); edje_edit_save_all(worker->project->global_object); eina_file_copy(worker->project->dev, worker->edj, EINA_FILE_COPY_PERMISSION | EINA_FILE_COPY_XATTR, NULL, NULL); - + PROGRESS_SEND("Saved."); WORKER_LOCK_RELEASE; - PROGRESS_SEND("Saved."); END_SEND(PM_PROJECT_SUCCESS); return NULL; } --