mirror of
https://github.com/moonlight-stream/moonlight-common-c.git
synced 2025-08-17 08:55:48 +00:00
Replace #ifdef _WIN32 with gates on our platforms definitions. Implement PltIsThreadInterrupted for POSIX. Fix PltWaitForEvent for POSIX.
This commit is contained in:
parent
8ad3145638
commit
f9882f91e1
@ -16,7 +16,7 @@ VOID WINAPI ApcFunc(ULONG_PTR parameter) {
|
||||
WCHAR DbgBuf[512];
|
||||
#endif
|
||||
|
||||
#ifdef LC_WINDOWS
|
||||
#if defined(LC_WINDOWS) || defined(LC_WINDOWS_PHONE)
|
||||
DWORD WINAPI ThreadProc(LPVOID lpParameter) {
|
||||
struct thread_context *ctx = (struct thread_context *)lpParameter;
|
||||
|
||||
@ -108,6 +108,9 @@ int PltIsThreadInterrupted(PLT_THREAD *thread) {
|
||||
#if defined(LC_WINDOWS) || defined(LC_WINDOWS_PHONE)
|
||||
return thread->cancelled;
|
||||
#else
|
||||
// The thread will die here if a cancellation was requested
|
||||
pthread_testcancel();
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -133,7 +136,7 @@ int PltCreateThread(ThreadEntry entry, void* context, PLT_THREAD *thread) {
|
||||
ctx->entry = entry;
|
||||
ctx->context = context;
|
||||
|
||||
#ifdef _WIN32
|
||||
#if defined(LC_WINDOWS) || defined(LC_WINDOWS_PHONE)
|
||||
{
|
||||
thread->cancelled = 0;
|
||||
thread->handle = CreateThread(NULL, 0, ThreadProc, ctx, 0, NULL);
|
||||
@ -174,7 +177,7 @@ int PltCreateEvent(PLT_EVENT *event) {
|
||||
}
|
||||
|
||||
void PltCloseEvent(PLT_EVENT *event) {
|
||||
#ifdef _WIN32
|
||||
#if defined(LC_WINDOWS) || defined(LC_WINDOWS_PHONE)
|
||||
CloseHandle(*event);
|
||||
#else
|
||||
pthread_mutex_destroy(&event->mutex);
|
||||
@ -183,7 +186,7 @@ void PltCloseEvent(PLT_EVENT *event) {
|
||||
}
|
||||
|
||||
void PltSetEvent(PLT_EVENT *event) {
|
||||
#ifdef _WIN32
|
||||
#if defined(LC_WINDOWS) || defined(LC_WINDOWS_PHONE)
|
||||
SetEvent(*event);
|
||||
#else
|
||||
event->signalled = 1;
|
||||
@ -192,7 +195,7 @@ void PltSetEvent(PLT_EVENT *event) {
|
||||
}
|
||||
|
||||
void PltClearEvent(PLT_EVENT *event) {
|
||||
#ifdef _WIN32
|
||||
#if defined(LC_WINDOWS) || defined(LC_WINDOWS_PHONE)
|
||||
ResetEvent(*event);
|
||||
#else
|
||||
event->signalled = 0;
|
||||
@ -200,7 +203,7 @@ void PltClearEvent(PLT_EVENT *event) {
|
||||
}
|
||||
|
||||
int PltWaitForEvent(PLT_EVENT *event) {
|
||||
#ifdef _WIN32
|
||||
#if defined(LC_WINDOWS) || defined(LC_WINDOWS_PHONE)
|
||||
DWORD error = WaitForSingleObjectEx(*event, INFINITE, TRUE);
|
||||
if (error == STATUS_WAIT_0) {
|
||||
return PLT_WAIT_SUCCESS;
|
||||
@ -218,5 +221,6 @@ int PltWaitForEvent(PLT_EVENT *event) {
|
||||
pthread_cond_wait(&event->cond, &event->mutex);
|
||||
}
|
||||
pthread_mutex_unlock(&event->mutex);
|
||||
return PLT_WAIT_SUCCESS;
|
||||
#endif
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user