netstar pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=647d866bba0b34d6b59a6360ae42bcf181767aaa

commit 647d866bba0b34d6b59a6360ae42bcf181767aaa
Author: Al Poole <[email protected]>
Date:   Wed Sep 20 16:47:30 2017 +0100

    Build: make build proces more robust.
    
    Use a different socket address for each type. Also add some
    UI indicators when a build is in progress.
---
 src/bin/edi_main.c                  | 23 ++++++++++++++++++-----
 src/lib/edi_build_provider_cargo.c  |  4 ++--
 src/lib/edi_build_provider_cmake.c  |  4 ++--
 src/lib/edi_build_provider_make.c   |  4 ++--
 src/lib/edi_build_provider_meson.c  |  8 +++++---
 src/lib/edi_build_provider_python.c |  4 ++--
 src/lib/edi_exe.c                   | 13 +------------
 7 files changed, 32 insertions(+), 28 deletions(-)

diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c
index 3ffdd4a..70cd299 100644
--- a/src/bin/edi_main.c
+++ b/src/bin/edi_main.c
@@ -49,6 +49,7 @@ static Elm_Object_Item *_edi_selected_bottompanel;
 static Evas_Object *_edi_filepanel, *_edi_filepanel_icon;
 
 static Evas_Object *_edi_menu_undo, *_edi_menu_redo, *_edi_toolbar_undo, 
*_edi_toolbar_redo;
+static Evas_Object *_edi_menu_build, *_edi_menu_clean, *_edi_menu_test;
 static Evas_Object *_edi_menu_init, *_edi_menu_commit, *_edi_menu_push, 
*_edi_menu_pull, *_edi_menu_status, *_edi_menu_stash;
 static Evas_Object *_edi_menu_save, *_edi_toolbar_save;
 static Evas_Object *_edi_main_win, *_edi_main_box;
@@ -697,6 +698,14 @@ _edi_launcher_run(Edi_Project_Config_Launch *launch)
 }
 
 static void
+_edi_build_menu_items_disabled_set(Eina_Bool state)
+{
+   elm_object_disabled_set(_edi_menu_build, state);
+   elm_object_disabled_set(_edi_menu_test, state);
+   elm_object_disabled_set(_edi_menu_clean, state);
+}
+
+static void
 _edi_build_display_status_cb(int status, void *data)
 {
    Eina_Strbuf *title, *message;
@@ -714,6 +723,7 @@ _edi_build_display_status_cb(int status, void *data)
 
    edi_screens_desktop_notify(eina_strbuf_string_get(title), 
eina_strbuf_string_get(message));
 
+   _edi_build_menu_items_disabled_set(EINA_FALSE);
    eina_strbuf_free(title);
    eina_strbuf_free(message);
 }
@@ -723,6 +733,7 @@ _edi_build_project(void)
 {
    if (edi_exe_notify_handle("edi_build", _edi_build_display_status_cb, 
_("Build")))
      {
+        _edi_build_menu_items_disabled_set(EINA_TRUE);
         edi_consolepanel_show();
         edi_builder_build();
      }
@@ -731,8 +742,9 @@ _edi_build_project(void)
 static void
 _edi_build_clean_project(void)
 {
-   if (edi_exe_notify_handle("edi_build", _edi_build_display_status_cb, 
_("Clean")))
+   if (edi_exe_notify_handle("edi_clean", _edi_build_display_status_cb, 
_("Clean")))
      {
+        _edi_build_menu_items_disabled_set(EINA_TRUE);
         edi_consolepanel_show();
         edi_builder_clean();
      }
@@ -741,8 +753,9 @@ _edi_build_clean_project(void)
 static void
 _edi_build_test_project(void)
 {
-   if (edi_exe_notify_handle("edi_build", _edi_build_display_status_cb, 
_("Test")))
+   if (edi_exe_notify_handle("edi_test", _edi_build_display_status_cb, 
_("Test")))
      {
+        _edi_build_menu_items_disabled_set(EINA_TRUE);
         edi_consolepanel_show();
         edi_builder_test();
      }
@@ -1130,11 +1143,11 @@ _edi_menu_setup(Evas_Object *win)
    elm_menu_item_add(menu, menu_it, "edit-find", _("Open Tasks"), 
_edi_menu_view_tasks_cb, NULL);
 
    menu_it = elm_menu_item_add(menu, NULL, NULL, _("Build"), NULL, NULL);
-   elm_menu_item_add(menu, menu_it, "system-run", _("Build"), 
_edi_menu_build_cb, NULL);
-   elm_menu_item_add(menu, menu_it, "media-record", _("Test"), 
_edi_menu_test_cb, NULL);
+   _edi_menu_build = elm_menu_item_add(menu, menu_it, "system-run", 
_("Build"), _edi_menu_build_cb, NULL);
+   _edi_menu_test = elm_menu_item_add(menu, menu_it, "media-record", 
_("Test"), _edi_menu_test_cb, NULL);
    elm_menu_item_add(menu, menu_it, "media-playback-start", _("Run"), 
_edi_menu_run_cb, NULL);
    elm_menu_item_add(menu, menu_it, "utilities-terminal", _("Debug"), 
_edi_menu_debug_cb, NULL);
-   elm_menu_item_add(menu, menu_it, "edit-clear", _("Clean"), 
_edi_menu_clean_cb, NULL);
+   _edi_menu_clean = elm_menu_item_add(menu, menu_it, "edit-clear", 
_("Clean"), _edi_menu_clean_cb, NULL);
 
    menu_it = elm_menu_item_add(menu, NULL, NULL, _("Project"), NULL, NULL);
    _edi_menu_init = elm_menu_item_add(menu, menu_it, "media-playback-start", 
_("Init"), _edi_menu_scm_init_cb, NULL);
diff --git a/src/lib/edi_build_provider_cargo.c 
b/src/lib/edi_build_provider_cargo.c
index c78b8e0..dcf2ee1 100644
--- a/src/lib/edi_build_provider_cargo.c
+++ b/src/lib/edi_build_provider_cargo.c
@@ -67,7 +67,7 @@ static void
 _cargo_test(void)
 {
    if (chdir(edi_project_get()) == 0)
-     edi_exe_notify("edi_build", "cargo test");
+     edi_exe_notify("edi_test", "cargo test");
 }
 
 static void
@@ -81,7 +81,7 @@ static void
 _cargo_clean(void)
 {
    if (chdir(edi_project_get()) == 0)
-     edi_exe_notify("edi_build", "cargo clean");
+     edi_exe_notify("edi_clean", "cargo clean");
 }
 
 Edi_Build_Provider _edi_build_provider_cargo =
diff --git a/src/lib/edi_build_provider_cmake.c 
b/src/lib/edi_build_provider_cmake.c
index 78ddfb6..f43e43d 100644
--- a/src/lib/edi_build_provider_cmake.c
+++ b/src/lib/edi_build_provider_cmake.c
@@ -61,7 +61,7 @@ _cmake_test(void)
    if (chdir(edi_project_get()) != 0)
      ERR("Could not chdir");
 
-   edi_exe_notify("edi_build", "env CK_VERBOSITY=verbose make check");
+   edi_exe_notify("edi_test", "env CK_VERBOSITY=verbose make check");
 }
 
 static void
@@ -100,7 +100,7 @@ _cmake_clean(void)
    if (chdir(edi_project_get()) != 0)
      ERR("Could not chdir");
 
-   edi_exe_notify("edi_build", "make clean");
+   edi_exe_notify("edi_clean", "make clean");
 }
 
 Edi_Build_Provider _edi_build_provider_cmake =
diff --git a/src/lib/edi_build_provider_make.c 
b/src/lib/edi_build_provider_make.c
index de65d4b..2f3854c 100644
--- a/src/lib/edi_build_provider_make.c
+++ b/src/lib/edi_build_provider_make.c
@@ -128,7 +128,7 @@ _make_test(void)
      ERR("Could not chdir");
    chdir(edi_project_get());
 
-   edi_exe_notify("edi_build", cmd);
+   edi_exe_notify("edi_test", cmd);
 }
 
 static void
@@ -171,7 +171,7 @@ _make_clean(void)
    if (chdir(edi_project_get()) !=0)
      ERR("Could not chdir");
 
-   edi_exe_notify("edi_build", cmd);
+   edi_exe_notify("edi_clean", cmd);
 }
 
 Edi_Build_Provider _edi_build_provider_make =
diff --git a/src/lib/edi_build_provider_meson.c 
b/src/lib/edi_build_provider_meson.c
index 6679faf..e4e47b2 100644
--- a/src/lib/edi_build_provider_meson.c
+++ b/src/lib/edi_build_provider_meson.c
@@ -85,8 +85,10 @@ _meson_ninja_do(Meson_Data *md, const char *arg)
    const char *cmd;
 
    cmd = eina_slstr_printf("ninja -C %s %s", md->fulldir, arg ?: "");
-
-   edi_exe_notify("edi_build", cmd);
+   if (arg && !strcmp(arg, "clean"))
+     edi_exe_notify("edi_clean", cmd);
+   else
+     edi_exe_notify("edi_build", cmd);
 }
 
 static Eina_Bool
@@ -137,7 +139,7 @@ _meson_build(void)
 static void
 _meson_test(void)
 {
-   edi_exe_notify("edi_build", "exit 1");
+   edi_exe_notify("edi_test", "exit 1");
    ERR("Edi doesn't support test with Meson/Ninja!");
 }
 
diff --git a/src/lib/edi_build_provider_python.c 
b/src/lib/edi_build_provider_python.c
index ff57b7c..3993e0e 100644
--- a/src/lib/edi_build_provider_python.c
+++ b/src/lib/edi_build_provider_python.c
@@ -67,7 +67,7 @@ static void
 _python_test(void)
 {
    if (chdir(edi_project_get()) == 0)
-     edi_exe_notify("edi_build", "./setup.py test");
+     edi_exe_notify("edi_test", "./setup.py test");
 }
 
 static void
@@ -81,7 +81,7 @@ static void
 _python_clean(void)
 {
    if (chdir(edi_project_get()) == 0)
-     edi_exe_notify("edi_build", "./setup.py clean --all");
+     edi_exe_notify("edi_clean", "./setup.py clean --all");
 }
 
 Edi_Build_Provider _edi_build_provider_python =
diff --git a/src/lib/edi_exe.c b/src/lib/edi_exe.c
index 4cdd199..caccfb9 100644
--- a/src/lib/edi_exe.c
+++ b/src/lib/edi_exe.c
@@ -16,8 +16,6 @@ typedef struct _Edi_Exe_Args {
    Ecore_Event_Handler *handler;
 } Edi_Exe_Args;
 
-static Eina_Bool _edi_exe_in_progress = EINA_FALSE;
-
 static Eina_Bool
 _edi_exe_notify_data_cb(void *data, int type EINA_UNUSED, void *event 
EINA_UNUSED)
 {
@@ -28,12 +26,10 @@ _edi_exe_notify_data_cb(void *data, int type EINA_UNUSED, 
void *event EINA_UNUSE
    status = ev->data;
 
    args = data;
+   ecore_event_handler_del(args->handler);
 
    args->func(*status, args->data);
 
-   ecore_event_handler_del(args->handler);
-   args->handler = NULL;
-
    free(args);
 
    return ECORE_CALLBACK_DONE;
@@ -83,8 +79,6 @@ _edi_exe_event_done_cb(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event
 
   free(args);
 
-  _edi_exe_in_progress = EINA_FALSE;
-
   return ECORE_CALLBACK_DONE;
 }
 
@@ -93,11 +87,6 @@ edi_exe_notify(const char *name, const char *command)
 {
    Edi_Exe_Args *args;
 
-   if (_edi_exe_in_progress)
-     return;
-
-   _edi_exe_in_progress = EINA_TRUE;
-
    ecore_exe_pipe_run(command,
                       ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ |
                       ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | 
ECORE_EXE_PIPE_ERROR |

-- 


Reply via email to