rimmed pushed a commit to branch master.

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

commit c6cb7acb1107ba649d54d1de9afc6c174e46dad7
Author: Vyacheslav Reutskiy <v.reuts...@samsung.com>
Date:   Mon Sep 19 16:18:26 2016 +0300

    project manager2: handle error on open project
    
    Change-Id: I77c456e0cbb6cd87bcac9798e92cffbbe458d8fc
---
 src/bin/project_manager/project_manager2.c | 67 +++++++++++++++++-------------
 1 file changed, 39 insertions(+), 28 deletions(-)

diff --git a/src/bin/project_manager/project_manager2.c 
b/src/bin/project_manager/project_manager2.c
index a139abd..ea3e030 100644
--- a/src/bin/project_manager/project_manager2.c
+++ b/src/bin/project_manager/project_manager2.c
@@ -400,9 +400,9 @@ _lock_try(const char *path, Eina_Bool check, HANDLE *pro_fd)
 #endif
 
 static Eina_Bool
-_exe_output_print(void *data,
-                  int type __UNUSED__,
-                  void *event_info)
+_exe_output_handler(void *data,
+                    int type __UNUSED__,
+                    void *event_info)
 {
    int i;
    Ecore_Exe_Event_Data *edje_cc_msg = (Ecore_Exe_Event_Data *)event_info;
@@ -416,11 +416,24 @@ _exe_output_print(void *data,
    return ECORE_CALLBACK_DONE;
 }
 
+static Eina_Bool
+_exe_error_handler(void *data,
+                   int type __UNUSED__,
+                   void *event_info __UNUSED__)
+{
+   Project_Process_Data *ppd = data;
+
+   ppd->result = PM_PROJECT_ERROR;
+   _end_send(ppd);
+
+   return ECORE_CALLBACK_DONE;
+}
+
 
 static Eina_Bool
-_exe_finish(void *data,
-            int type __UNUSED__,
-            void *event_info __UNUSED__)
+_exe_finish_handler(void *data,
+                    int type __UNUSED__,
+                    void *event_info __UNUSED__)
 {
    Project_Process_Data *ppd = data;
    Project *project = (Project *) ppd->project;
@@ -431,7 +444,7 @@ _exe_finish(void *data,
    return ECORE_CALLBACK_DONE;
 }
 
-static void
+static Eina_Bool
 _project_open_internal(Project_Process_Data *ppd)
 {
    Ecore_Exe_Flags flags;
@@ -455,14 +468,14 @@ _project_open_internal(Project_Process_Data *ppd)
      {
         /* really this case is unlickly, but we need handle it */
         ERR("Project file already locked by another application");
-        return;
+        return false;
      }
 
    ef = eet_open(ppd->path, EET_FILE_MODE_READ_WRITE);
    if (!ef)
      {
         ERR("Failed to open project file handler");
-        return;
+        return false;
      }
 
    _project_descriptor_init(ppd);
@@ -471,7 +484,7 @@ _project_open_internal(Project_Process_Data *ppd)
    if (!ppd->project)
      {
         ERR("Failed to load project data");
-        return;
+        return false;
      }
 
    ppd->project->ef = ef;
@@ -540,7 +553,7 @@ _project_open_internal(Project_Process_Data *ppd)
      {
         CRIT("Missing internal group '"EFLETE_INTERNAL_GROUP_NAME" in file 
%s\n",
              ppd->project->saved_edj);
-        return;
+        return false;
      }
    _project_dev_file_create(ppd->project);
    ppd->project->mmap_file = eina_file_open(ppd->project->dev, false);
@@ -554,7 +567,7 @@ _project_open_internal(Project_Process_Data *ppd)
    if (EDJE_LOAD_ERROR_NONE != error)
      {
          CRIT("Could not load internal object: %s\n", 
edje_load_error_str(error));
-         return;
+         return false;
      }
 
    pm_project_meta_data_get(ppd->project, &ppd->project->name, NULL, NULL, 
NULL, NULL);
@@ -571,13 +584,14 @@ _project_open_internal(Project_Process_Data *ppd)
    flags = ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_READ_LINE_BUFFERED |
            ECORE_EXE_PIPE_ERROR | ECORE_EXE_PIPE_ERROR_LINE_BUFFERED;
    ecore_exe_pipe_run(cmd, flags, NULL);
-   //ecore_exe_auto_limits_set(exe_cmd, 0, -1, 1, 1);
 
-   ppd->data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, 
_exe_output_print, ppd);
-   ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, 
_exe_output_print, ppd);
-   ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
_exe_finish, ppd);
+   ppd->data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, 
_exe_output_handler, ppd);
+   ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, 
_exe_error_handler, ppd);
+   ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
_exe_finish_handler, ppd);
 
    free(file_dir);
+
+   return true;
 }
 
 void
@@ -599,7 +613,11 @@ pm_project_open(const char *path,
    ppd->func_end = func_end;
    ppd->data = (void *)data;
 
-   _project_open_internal(ppd);
+   if (!_project_open_internal(ppd))
+     {
+        eina_stringshare_del(ppd->path);
+        free(ppd);
+     }
 
    free(spath);
 }
@@ -609,7 +627,7 @@ _project_import_edj(void *data)
 {
    Project_Process_Data *ppd = data;
    Eina_Stringshare *edj_in, *edj_out;
-   Eina_List *l, *groups;
+   Eina_List *l;
    Eina_Stringshare *group;
    Evas_Object *obj = NULL;
    Eina_Strbuf *strbuf;
@@ -636,9 +654,7 @@ _project_import_edj(void *data)
         _end_send(ppd);
         return;
      }
-   groups = edje_file_collection_list(ppd->edj);
-
-   if (ppd->widgets && (eina_list_count(groups) != 
eina_list_count(ppd->widgets)))
+   if (ppd->widgets)
      {
         //msg = eina_stringshare_printf(_("Merging groups from choosen file"));
         snprintf(buf, sizeof(buf), "Merging groups from choosen file");
@@ -721,21 +737,16 @@ _project_import_edj(void *data)
         TODO("check result")
         _project_edj_file_copy(ppd);
         _copy_meta_data_to_pro(ppd);
-        _project_open_internal(ppd);
-        /*
         if (!_project_open_internal(ppd))
           {
              eina_stringshare_del(ppd->path);
              free(ppd);
              return;
           }
-          */
         _project_special_group_add(ppd->project);
         _project_dummy_image_add(ppd->project);
         _project_dummy_sample_add(ppd->project);
      }
-   edje_edit_string_list_free(groups);
-   return;
 }
 
 void
@@ -820,8 +831,8 @@ _project_import_edc(void *data)
 
    ecore_exe_pipe_run(buf, flags, NULL);
 
-   ppd->data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, 
_exe_output_print, ppd);
-   ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, 
_exe_output_print, ppd);
+   ppd->data_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DATA, 
_exe_output_handler, ppd);
+   ppd->error_handler = ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, 
_exe_output_handler, ppd);
    ppd->del_handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
_finish_from_edje_cc, ppd);
 
    return;

-- 


Reply via email to