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);

-- 


Reply via email to