forked from enlightenment/efl
parent
ff70ee29df
commit
5fd68084c9
|
@ -41,7 +41,7 @@ typedef struct _Eina_Thread_Win32 Eina_Thread_Win32;
|
||||||
struct _Eina_Thread_Win32
|
struct _Eina_Thread_Win32
|
||||||
{
|
{
|
||||||
HANDLE thread;
|
HANDLE thread;
|
||||||
Eina_Thread_Cb func;
|
void *(*func)(void *data);
|
||||||
void *data;
|
void *data;
|
||||||
void *ret;
|
void *ret;
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@ _eina_thread_win32_cb(LPVOID lpParam)
|
||||||
{
|
{
|
||||||
Eina_Thread_Win32 *tw = lpParam;
|
Eina_Thread_Win32 *tw = lpParam;
|
||||||
|
|
||||||
tw->ret = tw->func(tw->data, tw->index);
|
tw->ret = tw->func(tw->data);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -102,7 +102,7 @@ _eina_thread_win32_cb(LPVOID lpParam)
|
||||||
static Eina_Bool
|
static Eina_Bool
|
||||||
_eina_thread_win32_create(Eina_Thread *t,
|
_eina_thread_win32_create(Eina_Thread *t,
|
||||||
int affinity,
|
int affinity,
|
||||||
Eina_Thread_Cb func,
|
void *(*func)(void *data),
|
||||||
const void *data)
|
const void *data)
|
||||||
{
|
{
|
||||||
Eina_Thread_Win32 *tw;
|
Eina_Thread_Win32 *tw;
|
||||||
|
@ -127,17 +127,14 @@ _eina_thread_win32_create(Eina_Thread *t,
|
||||||
tw->thread = CreateThread(NULL, 0, _eina_thread_win32_cb, tw, 0, NULL);
|
tw->thread = CreateThread(NULL, 0, _eina_thread_win32_cb, tw, 0, NULL);
|
||||||
if (!tw->thread) goto on_error;
|
if (!tw->thread) goto on_error;
|
||||||
|
|
||||||
if (!SetThreadAffinityMask(tw->thread, 1 << affinity))
|
/* affinity is an hint, if we fail, we continue without */
|
||||||
goto close_thread;
|
SetThreadAffinityMask(tw->thread, 1 << affinity);
|
||||||
|
|
||||||
_thread_running = eina_list_append(_thread_running, tw);
|
_thread_running = eina_list_append(_thread_running, tw);
|
||||||
|
|
||||||
*t = tw->index;
|
*t = tw->index;
|
||||||
return EINA_TRUE;
|
return EINA_TRUE;
|
||||||
|
|
||||||
close_thread:
|
|
||||||
CloseHandle(tw->thread);
|
|
||||||
tw->thread = NULL;
|
|
||||||
on_error:
|
on_error:
|
||||||
_thread_pool = eina_list_append(_thread_pool, tw);
|
_thread_pool = eina_list_append(_thread_pool, tw);
|
||||||
return EINA_FALSE;
|
return EINA_FALSE;
|
||||||
|
|
Loading…
Reference in New Issue