forked from enlightenment/efl
Ecore exe: Fix compilation on windows.
Hopefully. I don't have a winodws box to test it on. Go Jenkins go.
This commit is contained in:
parent
1bf49ea8e7
commit
40aa38c164
|
@ -990,6 +990,9 @@ ecore_exe_free(Ecore_Exe *obj)
|
||||||
|
|
||||||
exes = eina_list_remove(exes, obj);
|
exes = eina_list_remove(exes, obj);
|
||||||
IF_FREE(exe->tag);
|
IF_FREE(exe->tag);
|
||||||
|
|
||||||
|
eo_del(exe);
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -44,11 +44,8 @@ static Ecore_Exe *exes = NULL;
|
||||||
|
|
||||||
static int run_pri = NORMAL_PRIORITY_CLASS;
|
static int run_pri = NORMAL_PRIORITY_CLASS;
|
||||||
|
|
||||||
struct _Ecore_Exe
|
struct _Ecore_Exe_Data
|
||||||
{
|
{
|
||||||
EINA_INLIST;
|
|
||||||
ECORE_MAGIC;
|
|
||||||
|
|
||||||
char *cmd;
|
char *cmd;
|
||||||
char *tag;
|
char *tag;
|
||||||
|
|
||||||
|
@ -93,6 +90,7 @@ struct _Ecore_Exe
|
||||||
Eina_Bool is_suspended : 1;
|
Eina_Bool is_suspended : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
typedef struct _Ecore_Exe_Data Ecore_Exe_Data;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ecore_exe_event_add_free(void *data EINA_UNUSED,
|
_ecore_exe_event_add_free(void *data EINA_UNUSED,
|
||||||
|
@ -128,14 +126,13 @@ _ecore_exe_close_cb(void *data,
|
||||||
Ecore_Win32_Handler *wh EINA_UNUSED)
|
Ecore_Win32_Handler *wh EINA_UNUSED)
|
||||||
{
|
{
|
||||||
Ecore_Exe_Event_Del *e;
|
Ecore_Exe_Event_Del *e;
|
||||||
Ecore_Exe *exe;
|
Ecore_Exe *obj = data;
|
||||||
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
DWORD exit_code = 0;
|
DWORD exit_code = 0;
|
||||||
|
|
||||||
e = calloc(1, sizeof(Ecore_Exe_Event_Del));
|
e = calloc(1, sizeof(Ecore_Exe_Event_Del));
|
||||||
if (!e) return 0;
|
if (!e) return 0;
|
||||||
|
|
||||||
exe = (Ecore_Exe *)data;
|
|
||||||
|
|
||||||
/* FIXME : manage the STILL_ACTIVE returned error */
|
/* FIXME : manage the STILL_ACTIVE returned error */
|
||||||
if (!GetExitCodeProcess(exe->process, &exit_code))
|
if (!GetExitCodeProcess(exe->process, &exit_code))
|
||||||
{
|
{
|
||||||
|
@ -149,7 +146,7 @@ _ecore_exe_close_cb(void *data,
|
||||||
e->exit_code = exit_code;
|
e->exit_code = exit_code;
|
||||||
e->exited = 1;
|
e->exited = 1;
|
||||||
e->pid = exe->process_id;
|
e->pid = exe->process_id;
|
||||||
e->exe = exe;
|
e->exe = obj;
|
||||||
|
|
||||||
ecore_event_add(ECORE_EXE_EVENT_DEL, e,
|
ecore_event_add(ECORE_EXE_EVENT_DEL, e,
|
||||||
_ecore_exe_event_del_free, NULL);
|
_ecore_exe_event_del_free, NULL);
|
||||||
|
@ -163,15 +160,14 @@ static unsigned int __stdcall
|
||||||
_ecore_exe_pipe_read_thread_cb(void *data)
|
_ecore_exe_pipe_read_thread_cb(void *data)
|
||||||
{
|
{
|
||||||
char buf[64];
|
char buf[64];
|
||||||
Ecore_Exe *exe;
|
Ecore_Exe *obj = data;
|
||||||
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
Ecore_Exe_Event_Data *event_data;
|
Ecore_Exe_Event_Data *event_data;
|
||||||
char *current_buf = NULL;
|
char *current_buf = NULL;
|
||||||
DWORD size;
|
DWORD size;
|
||||||
DWORD current_size = 0;
|
DWORD current_size = 0;
|
||||||
BOOL res;
|
BOOL res;
|
||||||
|
|
||||||
exe = (Ecore_Exe *)data;
|
|
||||||
|
|
||||||
while (!exe->close_threads)
|
while (!exe->close_threads)
|
||||||
{
|
{
|
||||||
if (!PeekNamedPipe(exe->pipe_read.child_pipe,
|
if (!PeekNamedPipe(exe->pipe_read.child_pipe,
|
||||||
|
@ -200,12 +196,13 @@ _ecore_exe_pipe_read_thread_cb(void *data)
|
||||||
exe->pipe_read.data_buf = current_buf;
|
exe->pipe_read.data_buf = current_buf;
|
||||||
exe->pipe_read.data_size = current_size;
|
exe->pipe_read.data_size = current_size;
|
||||||
|
|
||||||
event_data = ecore_exe_event_data_get(exe, ECORE_EXE_PIPE_READ);
|
event_data = ecore_exe_event_data_get(obj, ECORE_EXE_PIPE_READ);
|
||||||
if (event_data)
|
if (event_data)
|
||||||
{
|
{
|
||||||
ecore_event_add(ECORE_EXE_EVENT_DATA, event_data,
|
ecore_event_add(ECORE_EXE_EVENT_DATA, event_data,
|
||||||
_ecore_exe_event_exe_data_free,
|
_ecore_exe_event_exe_data_free,
|
||||||
NULL);
|
NULL);
|
||||||
|
eo_do(obj, eo_event_callback_call(ECORE_EXE_EVENT_DATA_GET, event_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
current_buf = NULL;
|
current_buf = NULL;
|
||||||
|
@ -221,15 +218,14 @@ static unsigned int __stdcall
|
||||||
_ecore_exe_pipe_error_thread_cb(void *data)
|
_ecore_exe_pipe_error_thread_cb(void *data)
|
||||||
{
|
{
|
||||||
char buf[64];
|
char buf[64];
|
||||||
Ecore_Exe *exe;
|
Ecore_Exe *obj = data;
|
||||||
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
Ecore_Exe_Event_Data *event_data;
|
Ecore_Exe_Event_Data *event_data;
|
||||||
char *current_buf = NULL;
|
char *current_buf = NULL;
|
||||||
DWORD size;
|
DWORD size;
|
||||||
DWORD current_size = 0;
|
DWORD current_size = 0;
|
||||||
BOOL res;
|
BOOL res;
|
||||||
|
|
||||||
exe = (Ecore_Exe *)data;
|
|
||||||
|
|
||||||
while (!exe->close_threads)
|
while (!exe->close_threads)
|
||||||
{
|
{
|
||||||
if (!PeekNamedPipe(exe->pipe_error.child_pipe,
|
if (!PeekNamedPipe(exe->pipe_error.child_pipe,
|
||||||
|
@ -258,12 +254,13 @@ _ecore_exe_pipe_error_thread_cb(void *data)
|
||||||
exe->pipe_error.data_buf = current_buf;
|
exe->pipe_error.data_buf = current_buf;
|
||||||
exe->pipe_error.data_size = current_size;
|
exe->pipe_error.data_size = current_size;
|
||||||
|
|
||||||
event_data = ecore_exe_event_data_get(exe, ECORE_EXE_PIPE_ERROR);
|
event_data = ecore_exe_event_data_get(obj, ECORE_EXE_PIPE_ERROR);
|
||||||
if (event_data)
|
if (event_data)
|
||||||
{
|
{
|
||||||
ecore_event_add(ECORE_EXE_EVENT_ERROR, event_data,
|
ecore_event_add(ECORE_EXE_EVENT_ERROR, event_data,
|
||||||
_ecore_exe_event_exe_data_free,
|
_ecore_exe_event_exe_data_free,
|
||||||
NULL);
|
NULL);
|
||||||
|
eo_do(obj, eo_event_callback_call(ECORE_EXE_EVENT_DATA_ERROR, event_data));
|
||||||
}
|
}
|
||||||
|
|
||||||
current_buf = NULL;
|
current_buf = NULL;
|
||||||
|
@ -276,8 +273,9 @@ _ecore_exe_pipe_error_thread_cb(void *data)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_ecore_exe_threads_terminate(Ecore_Exe *exe)
|
_ecore_exe_threads_terminate(Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
HANDLE threads[2] = { NULL, NULL };
|
HANDLE threads[2] = { NULL, NULL };
|
||||||
int i = 0;
|
int i = 0;
|
||||||
|
|
||||||
|
@ -320,10 +318,10 @@ static BOOL CALLBACK
|
||||||
_ecore_exe_enum_windows_procedure(HWND window,
|
_ecore_exe_enum_windows_procedure(HWND window,
|
||||||
LPARAM data)
|
LPARAM data)
|
||||||
{
|
{
|
||||||
Ecore_Exe *exe;
|
Ecore_Exe *exe = data;
|
||||||
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
DWORD thread_id;
|
DWORD thread_id;
|
||||||
|
|
||||||
exe = (Ecore_Exe *)data;
|
|
||||||
thread_id = GetWindowThreadProcessId(window, NULL);
|
thread_id = GetWindowThreadProcessId(window, NULL);
|
||||||
|
|
||||||
if (thread_id == exe->thread_id)
|
if (thread_id == exe->thread_id)
|
||||||
|
@ -486,7 +484,7 @@ ecore_exe_pipe_run(const char *exe_cmd,
|
||||||
SECURITY_ATTRIBUTES sa;
|
SECURITY_ATTRIBUTES sa;
|
||||||
STARTUPINFO si;
|
STARTUPINFO si;
|
||||||
PROCESS_INFORMATION pi;
|
PROCESS_INFORMATION pi;
|
||||||
Ecore_Exe *exe;
|
Ecore_Exe *obj;
|
||||||
Ecore_Exe_Event_Add *e;
|
Ecore_Exe_Event_Add *e;
|
||||||
Eina_Bool use_sh = EINA_FALSE;
|
Eina_Bool use_sh = EINA_FALSE;
|
||||||
const char *shell = NULL;
|
const char *shell = NULL;
|
||||||
|
@ -498,8 +496,9 @@ ecore_exe_pipe_run(const char *exe_cmd,
|
||||||
if (!exe_cmd || !*exe_cmd)
|
if (!exe_cmd || !*exe_cmd)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
exe = calloc(1, sizeof(Ecore_Exe));
|
obj = eo_add(MY_CLASS, NULL, ecore_obj_exe_command_set(exe_cmd, flags));
|
||||||
if (!exe)
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
|
if (!obj)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if ((flags & ECORE_EXE_PIPE_AUTO) && (!(flags & ECORE_EXE_PIPE_ERROR))
|
if ((flags & ECORE_EXE_PIPE_AUTO) && (!(flags & ECORE_EXE_PIPE_ERROR))
|
||||||
|
@ -609,7 +608,6 @@ ecore_exe_pipe_run(const char *exe_cmd,
|
||||||
/* if (WaitForInputIdle(pi.hProcess, INFINITE) == WAIT_FAILED) */
|
/* if (WaitForInputIdle(pi.hProcess, INFINITE) == WAIT_FAILED) */
|
||||||
/* goto close_pipe_write; */
|
/* goto close_pipe_write; */
|
||||||
|
|
||||||
ECORE_MAGIC_SET(exe, ECORE_MAGIC_EXE);
|
|
||||||
exe->process = pi.hProcess;
|
exe->process = pi.hProcess;
|
||||||
exe->process_thread = pi.hThread;
|
exe->process_thread = pi.hThread;
|
||||||
exe->process_id = pi.dwProcessId;
|
exe->process_id = pi.dwProcessId;
|
||||||
|
@ -617,7 +615,7 @@ ecore_exe_pipe_run(const char *exe_cmd,
|
||||||
exe->data = (void *)data;
|
exe->data = (void *)data;
|
||||||
|
|
||||||
exe->h_close = ecore_main_win32_handler_add(exe->process,
|
exe->h_close = ecore_main_win32_handler_add(exe->process,
|
||||||
_ecore_exe_close_cb, exe);
|
_ecore_exe_close_cb, obj);
|
||||||
if (!exe->h_close)
|
if (!exe->h_close)
|
||||||
goto close_process;
|
goto close_process;
|
||||||
|
|
||||||
|
@ -628,17 +626,17 @@ ecore_exe_pipe_run(const char *exe_cmd,
|
||||||
}
|
}
|
||||||
|
|
||||||
exes = (Ecore_Exe *)eina_inlist_append(EINA_INLIST_GET(exes),
|
exes = (Ecore_Exe *)eina_inlist_append(EINA_INLIST_GET(exes),
|
||||||
EINA_INLIST_GET(exe));
|
EINA_INLIST_GET(obj));
|
||||||
|
|
||||||
e = (Ecore_Exe_Event_Add *)calloc(1, sizeof(Ecore_Exe_Event_Add));
|
e = (Ecore_Exe_Event_Add *)calloc(1, sizeof(Ecore_Exe_Event_Add));
|
||||||
if (!e) goto delete_h_close;
|
if (!e) goto delete_h_close;
|
||||||
|
|
||||||
e->exe = exe;
|
e->exe = obj;
|
||||||
|
|
||||||
ecore_event_add(ECORE_EXE_EVENT_ADD, e,
|
ecore_event_add(ECORE_EXE_EVENT_ADD, e,
|
||||||
_ecore_exe_event_add_free, NULL);
|
_ecore_exe_event_add_free, NULL);
|
||||||
|
|
||||||
return exe;
|
return obj;
|
||||||
|
|
||||||
delete_h_close:
|
delete_h_close:
|
||||||
ecore_main_win32_handler_del(exe->h_close);
|
ecore_main_win32_handler_del(exe->h_close);
|
||||||
|
@ -651,13 +649,13 @@ delete_h_close:
|
||||||
if (exe->pipe_write.child_pipe_x)
|
if (exe->pipe_write.child_pipe_x)
|
||||||
CloseHandle(exe->pipe_write.child_pipe_x);
|
CloseHandle(exe->pipe_write.child_pipe_x);
|
||||||
close_pipe_error:
|
close_pipe_error:
|
||||||
_ecore_exe_threads_terminate(exe);
|
_ecore_exe_threads_terminate(obj);
|
||||||
if (exe->pipe_error.child_pipe)
|
if (exe->pipe_error.child_pipe)
|
||||||
CloseHandle(exe->pipe_error.child_pipe);
|
CloseHandle(exe->pipe_error.child_pipe);
|
||||||
if (exe->pipe_error.child_pipe_x)
|
if (exe->pipe_error.child_pipe_x)
|
||||||
CloseHandle(exe->pipe_error.child_pipe_x);
|
CloseHandle(exe->pipe_error.child_pipe_x);
|
||||||
close_pipe_read:
|
close_pipe_read:
|
||||||
_ecore_exe_threads_terminate(exe);
|
_ecore_exe_threads_terminate(obj);
|
||||||
if (exe->pipe_read.child_pipe)
|
if (exe->pipe_read.child_pipe)
|
||||||
CloseHandle(exe->pipe_read.child_pipe);
|
CloseHandle(exe->pipe_read.child_pipe);
|
||||||
if (exe->pipe_read.child_pipe_x)
|
if (exe->pipe_read.child_pipe_x)
|
||||||
|
@ -665,27 +663,24 @@ delete_h_close:
|
||||||
free_exe_cmd:
|
free_exe_cmd:
|
||||||
free(exe->cmd);
|
free(exe->cmd);
|
||||||
free_exe:
|
free_exe:
|
||||||
free(exe);
|
eo_del(obj);
|
||||||
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_callback_pre_free_set(Ecore_Exe *exe,
|
ecore_exe_callback_pre_free_set(Ecore_Exe *obj,
|
||||||
Ecore_Exe_Cb func)
|
Ecore_Exe_Cb func)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
if (!exe)
|
||||||
{
|
return;
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE,
|
|
||||||
"ecore_exe_callback_pre_free_set");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
exe->pre_free_cb = func;
|
exe->pre_free_cb = func;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Eina_Bool
|
EAPI Eina_Bool
|
||||||
ecore_exe_send(Ecore_Exe *exe,
|
ecore_exe_send(Ecore_Exe *obj,
|
||||||
const void *data,
|
const void *data,
|
||||||
int size)
|
int size)
|
||||||
{
|
{
|
||||||
|
@ -693,17 +688,14 @@ ecore_exe_send(Ecore_Exe *exe,
|
||||||
DWORD num_exe;
|
DWORD num_exe;
|
||||||
BOOL res;
|
BOOL res;
|
||||||
|
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN_VAL(EINA_FALSE);
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
if (!exe)
|
||||||
{
|
return EINA_FALSE;
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_send");
|
|
||||||
return EINA_FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exe->close_stdin)
|
if (exe->close_stdin)
|
||||||
{
|
{
|
||||||
ERR("Ecore_Exe %p stdin is closed! Cannot send %d bytes from %p",
|
ERR("Ecore_Exe %p stdin is closed! Cannot send %d bytes from %p",
|
||||||
exe, size, data);
|
obj, size, data);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -719,7 +711,7 @@ ecore_exe_send(Ecore_Exe *exe,
|
||||||
if (!res || num_exe == 0)
|
if (!res || num_exe == 0)
|
||||||
{
|
{
|
||||||
ERR("Ecore_Exe %p stdin is closed! Cannot send %d bytes from %p",
|
ERR("Ecore_Exe %p stdin is closed! Cannot send %d bytes from %p",
|
||||||
exe, size, data);
|
obj, size, data);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -727,14 +719,13 @@ ecore_exe_send(Ecore_Exe *exe,
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_close_stdin(Ecore_Exe *exe)
|
ecore_exe_close_stdin(Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
EINA_MAIN_LOOP_CHECK_RETURN;
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_close_stdin");
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
exe->close_stdin = 1;
|
exe->close_stdin = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -749,20 +740,16 @@ ecore_exe_auto_limits_set(Ecore_Exe *exe EINA_UNUSED,
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Ecore_Exe_Event_Data *
|
EAPI Ecore_Exe_Event_Data *
|
||||||
ecore_exe_event_data_get(Ecore_Exe *exe,
|
ecore_exe_event_data_get(Ecore_Exe *obj,
|
||||||
Ecore_Exe_Flags flags)
|
Ecore_Exe_Flags flags)
|
||||||
{
|
{
|
||||||
Ecore_Exe_Event_Data *e = NULL;
|
Ecore_Exe_Event_Data *e = NULL;
|
||||||
unsigned char *inbuf;
|
unsigned char *inbuf;
|
||||||
DWORD inbuf_num;
|
DWORD inbuf_num;
|
||||||
Eina_Bool is_buffered = EINA_FALSE;
|
Eina_Bool is_buffered = EINA_FALSE;
|
||||||
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
|
if (!exe)
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
|
||||||
{
|
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_event_data_get");
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
|
||||||
|
|
||||||
/* Sort out what sort of event we are. */
|
/* Sort out what sort of event we are. */
|
||||||
if (flags & ECORE_EXE_PIPE_READ)
|
if (flags & ECORE_EXE_PIPE_READ)
|
||||||
|
@ -797,7 +784,7 @@ ecore_exe_event_data_get(Ecore_Exe *exe,
|
||||||
e = calloc(1, sizeof(Ecore_Exe_Event_Data));
|
e = calloc(1, sizeof(Ecore_Exe_Event_Data));
|
||||||
if (e)
|
if (e)
|
||||||
{
|
{
|
||||||
e->exe = exe;
|
e->exe = obj;
|
||||||
e->data = inbuf;
|
e->data = inbuf;
|
||||||
e->size = inbuf_num;
|
e->size = inbuf_num;
|
||||||
|
|
||||||
|
@ -876,17 +863,14 @@ ecore_exe_event_data_free(Ecore_Exe_Event_Data *e)
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void *
|
EAPI void *
|
||||||
ecore_exe_free(Ecore_Exe *exe)
|
ecore_exe_free(Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
void *data;
|
void *data;
|
||||||
|
|
||||||
if (!exe) return NULL;
|
if (!exe) return NULL;
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
if (!exe)
|
||||||
{
|
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_free");
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
|
||||||
|
|
||||||
data = exe->data;
|
data = exe->data;
|
||||||
|
|
||||||
|
@ -914,34 +898,31 @@ ecore_exe_free(Ecore_Exe *exe)
|
||||||
|
|
||||||
exes = (Ecore_Exe *)eina_inlist_remove(EINA_INLIST_GET(exes), EINA_INLIST_GET(exe));
|
exes = (Ecore_Exe *)eina_inlist_remove(EINA_INLIST_GET(exes), EINA_INLIST_GET(exe));
|
||||||
IF_FREE(exe->tag);
|
IF_FREE(exe->tag);
|
||||||
ECORE_MAGIC_SET(exe, ECORE_MAGIC_NONE);
|
eo_del(exe);
|
||||||
free(exe);
|
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI pid_t
|
EAPI pid_t
|
||||||
ecore_exe_pid_get(const Ecore_Exe *exe)
|
ecore_exe_pid_get(const Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
|
EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_pid_get");
|
return -1;
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
return exe->process_id;
|
return exe->process_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_tag_set(Ecore_Exe *exe,
|
ecore_exe_tag_set(Ecore_Exe *obj,
|
||||||
const char *tag)
|
const char *tag)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
EINA_MAIN_LOOP_CHECK_RETURN;
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_tag_set");
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
IF_FREE(exe->tag);
|
IF_FREE(exe->tag);
|
||||||
if (tag)
|
if (tag)
|
||||||
exe->tag = strdup(tag);
|
exe->tag = strdup(tag);
|
||||||
|
@ -950,79 +931,71 @@ ecore_exe_tag_set(Ecore_Exe *exe,
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI const char *
|
EAPI const char *
|
||||||
ecore_exe_tag_get(const Ecore_Exe *exe)
|
ecore_exe_tag_get(const Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
if (!exe)
|
||||||
{
|
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_tag_get");
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
|
||||||
return exe->tag;
|
return exe->tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI const char *
|
EAPI const char *
|
||||||
ecore_exe_cmd_get(const Ecore_Exe *exe)
|
ecore_exe_cmd_get(const Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
|
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_cmd_get");
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
|
||||||
return exe->cmd;
|
return exe->cmd;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void *
|
EAPI void *
|
||||||
ecore_exe_data_get(const Ecore_Exe *exe)
|
ecore_exe_data_get(const Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
|
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_data_get");
|
return NULL;
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
return exe->data;
|
return exe->data;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void *
|
EAPI void *
|
||||||
ecore_exe_data_set(Ecore_Exe *exe,
|
ecore_exe_data_set(Ecore_Exe *obj,
|
||||||
void *data)
|
void *data)
|
||||||
{
|
{
|
||||||
void *ret;
|
void *ret;
|
||||||
|
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
|
EINA_MAIN_LOOP_CHECK_RETURN_VAL(NULL);
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, __func__);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
|
||||||
ret = exe->data;
|
ret = exe->data;
|
||||||
exe->data = data;
|
exe->data = data;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI Ecore_Exe_Flags
|
EAPI Ecore_Exe_Flags
|
||||||
ecore_exe_flags_get(const Ecore_Exe *exe)
|
ecore_exe_flags_get(const Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
|
EINA_MAIN_LOOP_CHECK_RETURN_VAL(0);
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_data_get");
|
return 0;
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
return exe->flags;
|
return exe->flags;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_pause(Ecore_Exe *exe)
|
ecore_exe_pause(Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
EINA_MAIN_LOOP_CHECK_RETURN;
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_pause");
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (exe->is_suspended)
|
if (exe->is_suspended)
|
||||||
return;
|
return;
|
||||||
|
@ -1032,14 +1005,12 @@ ecore_exe_pause(Ecore_Exe *exe)
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_continue(Ecore_Exe *exe)
|
ecore_exe_continue(Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
EINA_MAIN_LOOP_CHECK_RETURN;
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_continue");
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!exe->is_suspended)
|
if (!exe->is_suspended)
|
||||||
return;
|
return;
|
||||||
|
@ -1049,99 +1020,80 @@ ecore_exe_continue(Ecore_Exe *exe)
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_interrupt(Ecore_Exe *exe)
|
ecore_exe_interrupt(Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
EINA_MAIN_LOOP_CHECK_RETURN;
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_interrupt");
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
CloseHandle(exe->process_thread);
|
CloseHandle(exe->process_thread);
|
||||||
exe->process_thread = NULL;
|
exe->process_thread = NULL;
|
||||||
CloseHandle(exe->process);
|
CloseHandle(exe->process);
|
||||||
exe->process = NULL;
|
exe->process = NULL;
|
||||||
exe->sig = ECORE_EXE_WIN32_SIGINT;
|
exe->sig = ECORE_EXE_WIN32_SIGINT;
|
||||||
while (EnumWindows(_ecore_exe_enum_windows_procedure, (LPARAM)exe)) ;
|
while (EnumWindows(_ecore_exe_enum_windows_procedure, (LPARAM)obj)) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_quit(Ecore_Exe *exe)
|
ecore_exe_quit(Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
EINA_MAIN_LOOP_CHECK_RETURN;
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_quit");
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
CloseHandle(exe->process_thread);
|
CloseHandle(exe->process_thread);
|
||||||
exe->process_thread = NULL;
|
exe->process_thread = NULL;
|
||||||
CloseHandle(exe->process);
|
CloseHandle(exe->process);
|
||||||
exe->process = NULL;
|
exe->process = NULL;
|
||||||
exe->sig = ECORE_EXE_WIN32_SIGQUIT;
|
exe->sig = ECORE_EXE_WIN32_SIGQUIT;
|
||||||
while (EnumWindows(_ecore_exe_enum_windows_procedure, (LPARAM)exe)) ;
|
while (EnumWindows(_ecore_exe_enum_windows_procedure, (LPARAM)obj)) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_terminate(Ecore_Exe *exe)
|
ecore_exe_terminate(Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
EINA_MAIN_LOOP_CHECK_RETURN;
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_terminate");
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* CloseHandle(exe->thread); */
|
/* CloseHandle(exe->thread); */
|
||||||
CloseHandle(exe->process);
|
CloseHandle(exe->process);
|
||||||
exe->process = NULL;
|
exe->process = NULL;
|
||||||
exe->sig = ECORE_EXE_WIN32_SIGTERM;
|
exe->sig = ECORE_EXE_WIN32_SIGTERM;
|
||||||
while (EnumWindows(_ecore_exe_enum_windows_procedure, (LPARAM)exe)) ;
|
while (EnumWindows(_ecore_exe_enum_windows_procedure, (LPARAM)obj)) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_kill(Ecore_Exe *exe)
|
ecore_exe_kill(Ecore_Exe *obj)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
EINA_MAIN_LOOP_CHECK_RETURN;
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
Ecore_Exe_Data *exe = eo_data_scope_get(obj, ECORE_EXE_CLASS);
|
||||||
{
|
if (!exe)
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_kill");
|
return;
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
CloseHandle(exe->process_thread);
|
CloseHandle(exe->process_thread);
|
||||||
exe->process_thread = NULL;
|
exe->process_thread = NULL;
|
||||||
CloseHandle(exe->process);
|
CloseHandle(exe->process);
|
||||||
exe->process = NULL;
|
exe->process = NULL;
|
||||||
exe->sig = ECORE_EXE_WIN32_SIGKILL;
|
exe->sig = ECORE_EXE_WIN32_SIGKILL;
|
||||||
while (EnumWindows(_ecore_exe_enum_windows_procedure, (LPARAM)exe)) ;
|
while (EnumWindows(_ecore_exe_enum_windows_procedure, (LPARAM)obj)) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_signal(Ecore_Exe *exe,
|
ecore_exe_signal(Ecore_Exe *exe EINA_UNUSED,
|
||||||
int num EINA_UNUSED)
|
int num EINA_UNUSED)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
|
||||||
{
|
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_signal");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* does nothing */
|
/* does nothing */
|
||||||
}
|
}
|
||||||
|
|
||||||
EAPI void
|
EAPI void
|
||||||
ecore_exe_hup(Ecore_Exe *exe)
|
ecore_exe_hup(Ecore_Exe *exe EINA_UNUSED)
|
||||||
{
|
{
|
||||||
EINA_MAIN_LOOP_CHECK_RETURN;
|
|
||||||
if (!ECORE_MAGIC_CHECK(exe, ECORE_MAGIC_EXE))
|
|
||||||
{
|
|
||||||
ECORE_MAGIC_FAIL(exe, ECORE_MAGIC_EXE, "ecore_exe_hup");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* does nothing */
|
/* does nothing */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "ecore_exe.eo.c"
|
||||||
|
|
Loading…
Reference in New Issue