aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Alc/backends/mmdevapi.c31
1 files changed, 15 insertions, 16 deletions
diff --git a/Alc/backends/mmdevapi.c b/Alc/backends/mmdevapi.c
index 54ac6dd6..5af500d1 100644
--- a/Alc/backends/mmdevapi.c
+++ b/Alc/backends/mmdevapi.c
@@ -104,6 +104,12 @@ typedef struct {
#define WM_USER_Enumerate (WM_USER+5)
#define WM_USER_Last (WM_USER+5)
+static inline void ReturnMsgResponse(ThreadRequest *req, HRESULT res)
+{
+ req->result = res;
+ SetEvent(req->FinishedEvt);
+}
+
static HRESULT WaitForResponse(ThreadRequest *req)
{
if(WaitForSingleObject(req->FinishedEvt, INFINITE) == WAIT_OBJECT_0)
@@ -592,8 +598,7 @@ static DWORD CALLBACK MMDevApiMsgProc(void *ptr)
if(FAILED(cohr))
{
WARN("Failed to initialize COM: 0x%08lx\n", cohr);
- req->result = cohr;
- SetEvent(req->FinishedEvt);
+ ReturnMsgResponse(req, cohr);
return 0;
}
@@ -602,8 +607,7 @@ static DWORD CALLBACK MMDevApiMsgProc(void *ptr)
{
WARN("Failed to create IMMDeviceEnumerator instance: 0x%08lx\n", hr);
CoUninitialize();
- req->result = hr;
- SetEvent(req->FinishedEvt);
+ ReturnMsgResponse(req, hr);
return 0;
}
Enumerator = ptr;
@@ -665,16 +669,15 @@ static DWORD CALLBACK MMDevApiMsgProc(void *ptr)
CoUninitialize();
}
- req->result = hr;
- SetEvent(req->FinishedEvt);
+ ReturnMsgResponse(req, hr);
continue;
case WM_USER_ResetDevice:
req = (ThreadRequest*)msg.wParam;
device = (ALCdevice*)msg.lParam;
- req->result = DoReset(device);
- SetEvent(req->FinishedEvt);
+ hr = DoReset(device);
+ ReturnMsgResponse(req, hr);
continue;
case WM_USER_StartDevice:
@@ -704,8 +707,7 @@ static DWORD CALLBACK MMDevApiMsgProc(void *ptr)
}
}
- req->result = hr;
- SetEvent(req->FinishedEvt);
+ ReturnMsgResponse(req, hr);
continue;
case WM_USER_StopDevice:
@@ -725,8 +727,7 @@ static DWORD CALLBACK MMDevApiMsgProc(void *ptr)
IAudioClient_Stop(data->client);
}
- req->result = S_OK;
- SetEvent(req->FinishedEvt);
+ ReturnMsgResponse(req, S_OK);
continue;
case WM_USER_CloseDevice:
@@ -745,8 +746,7 @@ static DWORD CALLBACK MMDevApiMsgProc(void *ptr)
if(--deviceCount == 0)
CoUninitialize();
- req->result = S_OK;
- SetEvent(req->FinishedEvt);
+ ReturnMsgResponse(req, S_OK);
continue;
case WM_USER_Enumerate:
@@ -796,8 +796,7 @@ static DWORD CALLBACK MMDevApiMsgProc(void *ptr)
if(--deviceCount == 0 && SUCCEEDED(cohr))
CoUninitialize();
- req->result = S_OK;
- SetEvent(req->FinishedEvt);
+ ReturnMsgResponse(req, S_OK);
continue;
default: