efl threadio - make call and call sync func proto same as efl events

well call sync returns a void * too.... instead of just void return
(nothing) but this makes it easier to write and maintain code due to
consistency of function callback signatures.
This commit is contained in:
Carsten Haitzler 2018-04-04 19:35:19 +09:00
parent 78d7fded5d
commit b90cd2f683
2 changed files with 26 additions and 6 deletions

View File

@ -118,7 +118,12 @@ _cb_thread_ctrl_out(void *data, const Efl_Event *event EINA_UNUSED)
EFlThreadIOCall func = cmd.d.ptr[0];
void *data = cmd.d.ptr[1];
Eina_Free_Cb free_func = cmd.d.ptr[2];
if (func) func(data, obj);
if (func)
{
Efl_Event event = { obj, NULL, NULL };
func(data, &event);
}
if (free_func) free_func(data);
}
else if (cmd.d.command == CMD_CALL_SYNC)
@ -127,7 +132,12 @@ _cb_thread_ctrl_out(void *data, const Efl_Event *event EINA_UNUSED)
void *data = cmd.d.ptr[1];
Eina_Free_Cb free_func = cmd.d.ptr[2];
Control_Reply *rep = cmd.d.ptr[3];
if (func) rep->data = func(data, obj);
if (func)
{
Efl_Event event = { obj, NULL, NULL };
rep->data = func(data, &event);
}
if (free_func) free_func(data);
eina_semaphore_release(&(rep->sem), 1);
}
@ -375,7 +385,12 @@ _cb_thread_parent_ctrl_out(void *data, const Efl_Event *event EINA_UNUSED)
EFlThreadIOCall func = cmd.d.ptr[0];
void *data = cmd.d.ptr[1];
Eina_Free_Cb free_func = cmd.d.ptr[2];
if (func) func(data, obj);
if (func)
{
Efl_Event event = { obj, NULL, NULL };
func(data, &event);
}
if (free_func) free_func(data);
}
else if (cmd.d.command == CMD_CALL_SYNC)
@ -384,7 +399,12 @@ _cb_thread_parent_ctrl_out(void *data, const Efl_Event *event EINA_UNUSED)
void *data = cmd.d.ptr[1];
Eina_Free_Cb free_func = cmd.d.ptr[2];
Control_Reply *rep = cmd.d.ptr[3];
if (func) rep->data = func(data, obj);
if (func)
{
Efl_Event event = { obj, NULL, NULL };
rep->data = func(data, &event);
}
if (free_func) free_func(data);
eina_semaphore_release(&(rep->sem), 1);
}

View File

@ -4,14 +4,14 @@ import eina_types;
function EFlThreadIOCall {
[[ A Function to call on the "other end" of a thread obvject ]]
params {
obj: Efl.Object; [[ ]]
@cref event: Efl.Event; [[ ]]
}
};
function EFlThreadIOCallSync {
[[ A Function to call on the "other end" of a thread obvject ]]
params {
obj: Efl.Object; [[ ]]
@cref event: Efl.Event; [[ ]]
}
return: void_ptr; [[ ]]
};