Skip to content

Commit

Permalink
Merge branch 'release/v0.7.1'
Browse files Browse the repository at this point in the history
  • Loading branch information
andydotxyz committed May 3, 2019
2 parents 897f552 + 6ef6476 commit 3dd9068
Show file tree
Hide file tree
Showing 29 changed files with 731 additions and 221 deletions.
2 changes: 1 addition & 1 deletion INSTALL
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ The above will only work after at least the following is done:
** QUICK AND DIRTY HELP **
--------------------------

How clean out the build and config and start fresh:
How to clean out the build and config and start fresh:

rm -rf build

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ and in creating apps based on the EFL suite.

meson
ninja
EFL latest release (>= 1.20.7)
EFL latest release (>= 1.22.0)
libclang-dev (or llvm-clang-devel)

## Installation
Expand Down
4 changes: 2 additions & 2 deletions meson.build
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
project(
'edi', 'c',
version : '0.7.99',
version : '0.7.1',
default_options: [ 'c_std=gnu99', 'warning_level=2' ],
meson_version : '>= 0.39.0')

Expand All @@ -22,7 +22,7 @@ config_h.set_quoted('PACKAGE_DOC_DIR', join_paths(get_option('prefix'), get_opti

config_h.set_quoted('EFL_BETA_API_SUPPORT' , '1')

elm = dependency('elementary', version : '>=1.21.1')
elm = dependency('elementary', version : '>=1.22.0')
top_inc = include_directories('.')

cc = meson.get_compiler('c')
Expand Down
2 changes: 1 addition & 1 deletion packaging/pkgbuild/PKGBUILD
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Maintainer: Enlightenment Developers <enlightenment-devel@enlightenment.org>
pkgname='edi-git'
pkgver=0.7.0.0001
pkgver=0.7.1.0001
pkgrel=1
pkgdesc="Efl based IDE - GIT development snapshot"
arch=('i686' 'x86_64' 'arm')
Expand Down
12 changes: 6 additions & 6 deletions src/bin/edi_consolepanel.c
Original file line number Diff line number Diff line change
Expand Up @@ -380,11 +380,11 @@ void edi_consolepanel_add(Evas_Object *parent)
evas_object_show(frame);

widget = elm_code_widget_add(parent, code);
elm_obj_code_widget_font_set(widget, _edi_project_config->font.name, _edi_project_config->font.size);
elm_code_widget_font_set(widget, _edi_project_config->font.name, _edi_project_config->font.size);
edi_theme_elm_code_set(widget, _edi_project_config->gui.theme);
elm_obj_code_widget_gravity_set(widget, 0.0, 1.0);
elm_code_widget_gravity_set(widget, 0.0, 1.0);
efl_event_callback_add(widget, &ELM_CODE_EVENT_LINE_LOAD_DONE, _edi_consolepanel_line_cb, NULL);
efl_event_callback_add(widget, ELM_OBJ_CODE_WIDGET_EVENT_LINE_CLICKED, _edi_consolepanel_clicked_cb, code);
efl_event_callback_add(widget, EFL_UI_CODE_WIDGET_EVENT_LINE_CLICKED, _edi_consolepanel_clicked_cb, code);

evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
Expand Down Expand Up @@ -415,11 +415,11 @@ void edi_testpanel_add(Evas_Object *parent)
evas_object_show(frame);

widget = elm_code_widget_add(parent, code);
elm_obj_code_widget_font_set(widget, _edi_project_config->font.name, _edi_project_config->font.size);
elm_code_widget_font_set(widget, _edi_project_config->font.name, _edi_project_config->font.size);
edi_theme_elm_code_set(widget, _edi_project_config->gui.theme);
elm_obj_code_widget_gravity_set(widget, 0.0, 1.0);
elm_code_widget_gravity_set(widget, 0.0, 1.0);
efl_event_callback_add(widget, &ELM_CODE_EVENT_LINE_LOAD_DONE, _edi_testpanel_line_cb, NULL);
efl_event_callback_add(widget, ELM_OBJ_CODE_WIDGET_EVENT_LINE_CLICKED, _edi_consolepanel_clicked_cb, code);
efl_event_callback_add(widget, EFL_UI_CODE_WIDGET_EVENT_LINE_CLICKED, _edi_consolepanel_clicked_cb, code);

evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
Expand Down
187 changes: 51 additions & 136 deletions src/bin/edi_debug.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,19 @@
# include "config.h"
#endif

#if defined(__FreeBSD__) || defined(__DragonFly__) || defined (__APPLE__) || defined(__OpenBSD__)
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
#include <unistd.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/user.h>
#endif
#if defined(__OpenBSD__)
#include <sys/proc.h>
#endif

#include <Eo.h>
#include <Eina.h>
#include <Elementary.h>

#include "edi_debug.h"
#include "edi_process.h"
#include "edi_config.h"
#include "edi_private.h"

Expand Down Expand Up @@ -67,160 +65,77 @@ Edi_Debug_Tool *edi_debug_tool_get(const char *name)
return &_debugger_tools[0];
}

#if defined(__FreeBSD__) || defined(__DragonFly__)
static long int
_sysctlfromname(const char *name, void *mib, int depth, size_t *len)
static int
_system_pid_max_get(void)
{
long int result;
static int pid_max = 0;

if (sysctlnametomib(name, mib, len) < 0) return -1;
*len = sizeof(result);
if (sysctl(mib, depth, &result, len, NULL, 0) < 0) return -1;
if (pid_max > 0)
return pid_max;

return result;
}
#if defined(__linux__)
FILE *f;
char buf[128];
size_t n;

f = fopen("/proc/sys/kernel/pid_max", "r");
if (f)
{
n = fread(buf, 1, sizeof(buf) - 1, f);
buf[n] = 0x00;
fclose(f);
pid_max = atoi(buf);
}
#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__)
int mib[2] = { CTL_KERN, KERN_MAXPROC };
size_t len = sizeof(pid_max);
sysctl(mib, 2, &pid_max, &len, NULL, 0);
#elif defined(PID_MAX)
pid_max = PID_MAX;
#endif
if (pid_max <= 0)
pid_max = 99999;

return pid_max;
}

/* Get the process ID of the child process being debugged in *our* session */
int edi_debug_process_id(Edi_Debug *debugger)
{
int my_pid, child_pid = -1;
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined (__APPLE__) || defined(__OpenBSD__)
struct kinfo_proc kp;
int mib[6];
size_t len;
int max_pid, i;
Edi_Proc_Stats *p;
int pid_max, debugger_pid, child_pid = -1;

if (!debugger) return -1;
if (!debugger->program_name) return -1;
if (!debugger->exe) return -1;

#if defined(__FreeBSD__) || defined(__DragonFly__)
len = sizeof(max_pid);
max_pid = _sysctlfromname("kern.lastpid", mib, 2, &len);
#elif defined(PID_MAX)
max_pid = PID_MAX;
#else
max_pid = 99999;
#endif
my_pid = ecore_exe_pid_get(debugger->exe);

#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__APPLE__)
if (sysctlnametomib("kern.proc.pid", mib, &len) < 0) return -1;
#elif defined(__OpenBSD__)
mib[0] = CTL_KERN;
mib[1] = KERN_PROC;
mib[2] = KERN_PROC_PID;
mib[4] = sizeof(struct kinfo_proc);
mib[5] = 1;
#endif
debugger_pid = ecore_exe_pid_get(debugger->exe);

for (i = my_pid; i <= max_pid; i++)
{
mib[3] = i;
len = sizeof(kp);
#if defined(__OpenBSD__)
if (sysctl(mib, 6, &kp, &len, NULL, 0) == -1) continue;
#else
if (sysctl(mib, 4, &kp, &len, NULL, 0) == -1) continue;
#endif
pid_max = _system_pid_max_get();

#if defined(__FreeBSD__) || defined(__DragonFly__)
if (kp.ki_ppid != my_pid) continue;
if (strcmp(debugger->program_name, kp.ki_comm)) continue;
child_pid = kp.ki_pid;
if (kp.ki_stat == SRUN || kp.ki_stat == SSLEEP)
debugger->state = EDI_DEBUG_PROCESS_ACTIVE;
else
debugger->state = EDI_DEBUG_PROCESS_SLEEPING;
#elif defined(__OpenBSD__)
if (kp.p_ppid != my_pid) continue;
if (strcmp(debugger->program_name, kp.p_comm)) continue;
child_pid = kp.p_pid;

if (kp.p_stat == SRUN || kp.p_stat == SSLEEP)
debugger->state = EDI_DEBUG_PROCESS_ACTIVE;
else
debugger->state = EDI_DEBUG_PROCESS_SLEEPING;
#else /* APPLE */
if (kp.kp_proc.p_oppid != my_pid) continue;
if (strcmp(debugger->program_name, kp.kp_proc.p_comm)) continue;
child_pid = kp.kp_proc.p_pid;
if (kp.kp_proc.p_stat == SRUN || kp.kp_proc.p_stat == SSLEEP)
debugger->state = EDI_DEBUG_PROCESS_ACTIVE;
else
debugger->state = EDI_DEBUG_PROCESS_SLEEPING;
#endif
break;
}
#else
Eina_List *files, *l;
const char *temp_name;
char path[PATH_MAX];
char buf[4096];
char *p, *name, *end;
FILE *f;
int count, parent_pid, pid;

if (!debugger->program_name)
return -1;

if (!debugger->exe) return -1;

my_pid = ecore_exe_pid_get(debugger->exe);

files = ecore_file_ls("/proc");

EINA_LIST_FOREACH(files, l, name)
for (int i = 1; i <= pid_max; i++)
{
pid = atoi(name);
if (!pid) continue;
snprintf(path, sizeof(path), "/proc/%d/cmdline", pid);
f = fopen(path, "r");
if (!f) continue;
p = fgets(buf, sizeof(buf), f);
fclose(f);
p = edi_process_stats_by_pid(i);
if (!p) continue;
temp_name = ecore_file_file_get(buf);
if (!strcmp(temp_name, debugger->program_name))

if (p->ppid == debugger_pid)
{
parent_pid = 0;
// Match success - program name with pid.
child_pid = pid;
snprintf(path, sizeof(path), "/proc/%d/stat", pid);
f = fopen(path, "r");
if (f)
if (!strcmp(debugger->program_name, p->command))
{
count = 0;
p = fgets(buf, sizeof(buf), f);
while (*p++ != '\0')
{
if (p[0] == ' ') { count++; p++; }
if (count == 2)
{
if (p[0] == 'S' || p[0] == 'R')
debugger->state = EDI_DEBUG_PROCESS_ACTIVE;
else
debugger->state = EDI_DEBUG_PROCESS_SLEEPING;
}
if (count == 3) break;
}
end = strchr(p, ' ');
if (end)
{
*end = '\0';
// parent pid matches - right process.
parent_pid = atoi(p);
}
fclose(f);
child_pid = p->pid;
if (!strcmp(p->state, "RUN") ||!strcmp(p->state, "SLEEP"))
debugger->state = EDI_DEBUG_PROCESS_ACTIVE;
else
debugger->state = EDI_DEBUG_PROCESS_SLEEPING;
}
if (parent_pid == my_pid)
break;
}

free(p);

if (child_pid != -1)
break;
}

if (files)
eina_list_free(files);
#endif
return child_pid;
}

24 changes: 9 additions & 15 deletions src/bin/edi_debugpanel.c
Original file line number Diff line number Diff line change
Expand Up @@ -197,11 +197,14 @@ _edi_debugpanel_button_start_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UN
edi_debugpanel_start(_edi_project_config_debug_command_get());
}

static Eina_Bool
_edi_debug_active_check_cb(void *data EINA_UNUSED)
void
edi_debugpanel_active_check(void)
{
Edi_Debug *debug;
int pid;
Edi_Debug *debug = edi_debug_get();

debug = edi_debug_get();
if (!debug) return;

pid = ecore_exe_pid_get(debug->exe);
if (pid == -1)
Expand All @@ -212,16 +215,11 @@ _edi_debug_active_check_cb(void *data EINA_UNUSED)
elm_object_disabled_set(_button_start, EINA_FALSE);
elm_object_disabled_set(_button_int, EINA_TRUE);
elm_object_disabled_set(_button_term, EINA_TRUE);
return ECORE_CALLBACK_RENEW;
return;
}

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

void edi_debugpanel_stop(void)
Expand Down Expand Up @@ -322,7 +320,6 @@ void edi_debugpanel_add(Evas_Object *parent)
Evas_Object *ico_start, *ico_quit, *ico_int, *ico_term;
Elm_Code_Widget *widget;
Elm_Code *code;
Ecore_Timer *timer;

frame = elm_frame_add(parent);
elm_object_text_set(frame, _("Debug"));
Expand All @@ -335,9 +332,9 @@ void edi_debugpanel_add(Evas_Object *parent)

code = elm_code_create();
widget = elm_code_widget_add(parent, code);
elm_obj_code_widget_font_set(widget, _edi_project_config->font.name, _edi_project_config->font.size);
elm_code_widget_font_set(widget, _edi_project_config->font.name, _edi_project_config->font.size);
edi_theme_elm_code_set(_info_widget, _edi_project_config->gui.theme);
elm_obj_code_widget_gravity_set(widget, 0.0, 1.0);
elm_code_widget_gravity_set(widget, 0.0, 1.0);
efl_event_callback_add(widget, &ELM_CODE_EVENT_LINE_LOAD_DONE, _edi_debugpanel_line_cb, NULL);
evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
Expand Down Expand Up @@ -409,9 +406,6 @@ void edi_debugpanel_add(Evas_Object *parent)

edi_debug_new();

timer = ecore_timer_add(1.0, _edi_debug_active_check_cb, NULL);
(void) timer;

elm_box_pack_end(box, widget);
elm_box_pack_end(box, table);
evas_object_show(box);
Expand Down
8 changes: 8 additions & 0 deletions src/bin/edi_debugpanel.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,14 @@ void edi_debugpanel_start(const char *toolname);
*/
void edi_debugpanel_stop();

/**
* Perform a poll to check the state of any debug session
*
* @ingroup UI
*/
void edi_debugpanel_active_check(void);


/**
* @}
*/
Expand Down
4 changes: 2 additions & 2 deletions src/bin/edi_logpanel.c
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@ void edi_logpanel_add(Evas_Object *parent)
code = elm_code_create();
widget = elm_code_widget_add(parent, code);
edi_theme_elm_code_set(widget, _edi_project_config->gui.theme);
elm_obj_code_widget_font_set(widget, _edi_project_config->font.name, _edi_project_config->font.size);
elm_obj_code_widget_gravity_set(widget, 0.0, 1.0);
elm_code_widget_font_set(widget, _edi_project_config->font.name, _edi_project_config->font.size);
elm_code_widget_gravity_set(widget, 0.0, 1.0);
efl_event_callback_add(widget, &ELM_CODE_EVENT_LINE_LOAD_DONE, _edi_logpanel_line_cb, NULL);
evas_object_size_hint_weight_set(widget, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
evas_object_size_hint_align_set(widget, EVAS_HINT_FILL, EVAS_HINT_FILL);
Expand Down
Loading

0 comments on commit 3dd9068

Please sign in to comment.