nikawhite pushed a commit to branch master.

http://git.enlightenment.org/tools/eflete.git/commit/?id=78f985167f906562bee2ea6b2c721cb470f89d81

commit 78f985167f906562bee2ea6b2c721cb470f89d81
Author: Mykyta Biliavskyi <[email protected]>
Date:   Tue Aug 9 13:02:01 2016 +0300

    Project manager: use new version of project open routine.
    
    Replaced old code for open project with code, that uses Ecore_Thread.
---
 src/bin/project_manager/project_manager.c | 115 +++---------------------------
 1 file changed, 11 insertions(+), 104 deletions(-)

diff --git a/src/bin/project_manager/project_manager.c 
b/src/bin/project_manager/project_manager.c
index 7805bca..0957200 100644
--- a/src/bin/project_manager/project_manager.c
+++ b/src/bin/project_manager/project_manager.c
@@ -593,102 +593,6 @@ pm_project_thread_project_get()
    return worker.project;
 }
 
-void *
-_project_open(void *data,
-              Eina_Thread *t __UNUSED__)
-{
-   Eet_File *ef;
-   char *tmp;
-   int tmp_len;
-   Eina_Stringshare *path = data;
-
-   assert(path != NULL);
-
-   edje_file_cache_flush();
-
-   if (!_lock_try(path, true))
-     {
-        /* really this case is unlickly, but we need handle it */
-        END_SEND(PM_PROJECT_LOCKED);
-        return NULL;
-     }
-
-   PROGRESS_SEND(_("Opening project \"%s\""), path);
-
-//   _project_descriptor_init();
-   ef = eet_open(path, EET_FILE_MODE_READ_WRITE);
-   if (!ef)
-     {
-        eina_stringshare_del(path);
-        END_SEND(PM_PROJECT_ERROR);
-        return NULL;
-     }
-
-   PROGRESS_SEND(_("Reading project descriptor"));
-
-   worker.project = eet_data_read(ef, worker.eed_project, PROJECT_FILE_KEY);
-//   _pm_project_descriptor_shutdown();
-   if (!worker.project)
-     {
-        eina_stringshare_del(path);
-        END_SEND(PM_PROJECT_ERROR);
-        return NULL;
-     }
-
-   worker.project->ef = ef;
-   worker.project->pro_path = eina_stringshare_add(path);
-
-   /* updating .dev file path */
-   tmp = strdup(path);
-   tmp_len = strlen(tmp);
-   tmp[tmp_len - 3] = 'd';
-   tmp[tmp_len - 2] = 'e';
-   tmp[tmp_len - 1] = 'v';
-   eina_stringshare_replace(&worker.project->dev, tmp);
-   free(tmp);
-   /* updating .edj file path */
-   tmp = strdup(path);
-   tmp[tmp_len - 3] = 'e';
-   tmp[tmp_len - 2] = 'd';
-   tmp[tmp_len - 1] = 'j';
-   eina_stringshare_replace(&worker.project->saved_edj, tmp);
-   free(tmp);
-   eina_stringshare_del(path);
-
-   PROGRESS_SEND(_("Checking project version"));
-   /* checking for older project versions and upgrading them 
version-by-version */
-   if (worker.project->version < 2) /* upgrade to version 2 */
-     {
-        PROGRESS_SEND(_("Updating project files to version 2"));
-        ecore_file_mv(worker.project->dev, worker.project->saved_edj);
-        worker.project->version = 2;
-     }
-   if (worker.project->version < 3) /* upgrade to version 3 */
-     {
-        PROGRESS_SEND(_("Updating project files to version 3"));
-        _project_special_group_add(worker.project);
-        worker.project->version = 3;
-     }
-   if (worker.project->version < 4) /* upgrade to version 4 */
-     {
-        PROGRESS_SEND(_("Updating project files to version 4"));
-        _project_dummy_image_add(worker.project);
-        worker.project->version = 4;
-     }
-   TODO("Add crash recovery prompt here")
-
-   pm_project_meta_data_get(worker.project, &worker.project->name, NULL, NULL, 
NULL, NULL);
-   if (!worker.project->name)
-     worker.project->name = 
ecore_file_strip_ext(ecore_file_file_get(worker.project->dev));
-
-   _project_open_internal(worker.project);
-
-   PROGRESS_SEND(_("Project is open"));
-   END_SEND(PM_PROJECT_SUCCESS);
-
-   return NULL;
-}
-
 void
 pm_project_open(const char *path,
                 PM_Project_Progress_Cb func_progress,
@@ -697,15 +601,18 @@ pm_project_open(const char *path,
 {
    assert(path != NULL);
 
-   WORKER_CREATE(func_progress, func_end, data, NULL,
-                 NULL, NULL, NULL, NULL, NULL, NULL);
+   Project_Thread *ptd;
+   ptd = mem_calloc(1, sizeof(Project_Thread));
+   ptd->path = eina_stringshare_add(path);
+   ptd->func_progress = func_progress;
+   ptd->func_end = func_end;
+   ptd->data = (void *)data;
+   eina_lock_new(&ptd->mutex);
 
-   if (!eina_thread_create(&worker.thread, EINA_THREAD_URGENT, -1,
-                           (void *)_project_open, eina_stringshare_add(path)))
-     {
-        ERR("System error: can't create thread");
-        abort();
-     }
+   /* Launch open project inside thread with feedback */
+   ecore_thread_feedback_run(_project_open_feedback_job, 
_project_open_feedback_cb,
+                             _project_open_end_cb, _project_open_cancel_cb, 
ptd,
+                             true);
 }
 
 void

-- 


Reply via email to