edi_debugpanel: fix debug panel buttons to work more reliably.

Use the timer to update the icons and fix the buttons to work well
with gdb. Doesn't affect other programs adversely.
edi-0.8
Al Poole 5 years ago
parent 29c5ecb538
commit cf3036d87b
  1. 50
      src/bin/edi_debugpanel.c

@ -124,6 +124,21 @@ _edi_debugpanel_keypress_cb(void *data EINA_UNUSED, Evas *e EINA_UNUSED, Evas_Ob
}
}
static void
_edi_debugpanel_icons_update(Edi_Debug_Process_State state)
{
Evas_Object *ico_int;
ico_int = elm_icon_add(_button_int);
if (state == EDI_DEBUG_PROCESS_ACTIVE)
elm_icon_standard_set(ico_int, "media-playback-pause");
else
elm_icon_standard_set(ico_int, "media-playback-start");
elm_object_part_content_set(_button_int, "icon", ico_int);
}
static void
_edi_debugpanel_bt_sigterm_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
@ -144,21 +159,6 @@ _edi_debugpanel_bt_sigterm_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUS
kill(pid, SIGTERM);
}
static void
_edi_debugpanel_icons_update(Edi_Debug_Process_State state)
{
Evas_Object *ico_int;
ico_int = elm_icon_add(_button_int);
if (state == EDI_DEBUG_PROCESS_ACTIVE)
elm_icon_standard_set(ico_int, "media-playback-pause");
else
elm_icon_standard_set(ico_int, "media-playback-start");
elm_object_part_content_set(_button_int, "icon", ico_int);
}
static void
_edi_debugpanel_bt_sigint_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED, void *event EINA_UNUSED)
{
@ -169,14 +169,17 @@ _edi_debugpanel_bt_sigint_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSE
if (!debug) return;
pid = edi_debug_process_id(debug);
if (pid <= 0) return;
if (pid <= 0)
{
if (debug->tool->command_start)
ecore_exe_send(debug->exe, debug->tool->command_start, strlen(debug->tool->command_start));
return;
}
if (debug->state == EDI_DEBUG_PROCESS_ACTIVE)
kill(pid, SIGINT);
else if (debug->tool->command_continue)
ecore_exe_send(debug->exe, debug->tool->command_continue, strlen(debug->tool->command_continue));
_edi_debugpanel_icons_update(debug->state);
}
static void
@ -207,11 +210,12 @@ _edi_debug_active_check_cb(void *data EINA_UNUSED)
elm_object_disabled_set(_button_int, EINA_TRUE);
elm_object_disabled_set(_button_term, EINA_TRUE);
}
else
{
if (edi_debug_process_id(debug) > 0)
_edi_debugpanel_icons_update(debug->state);
}
if (!debug)
return ECORE_CALLBACK_RENEW;
pid = edi_debug_process_id(debug);
_edi_debugpanel_icons_update(pid > 0 ? debug->state : 0);
return ECORE_CALLBACK_RENEW;
}

Loading…
Cancel
Save