wasapi: Handle return value of WaitForSingleObject
The wait could've failed for whatever reason, we should handle that.
diff --git a/sys/wasapi/gstwasapisink.c b/sys/wasapi/gstwasapisink.c
index b2e77aa..60bb97f 100644
--- a/sys/wasapi/gstwasapisink.c
+++ b/sys/wasapi/gstwasapisink.c
@@ -616,9 +616,16 @@
GST_OBJECT_UNLOCK (self);
while (pending > 0) {
+ DWORD dwWaitResult;
guint can_frames, have_frames, n_frames, write_len;
- WaitForSingleObject (self->event_handle, INFINITE);
+ dwWaitResult = WaitForSingleObject (self->event_handle, INFINITE);
+ if (dwWaitResult != WAIT_OBJECT_0) {
+ GST_ERROR_OBJECT (self, "Error waiting for event handle: %x",
+ (guint) dwWaitResult);
+ length -= pending;
+ goto beach;
+ }
/* We have N frames to be written out */
have_frames = pending / (self->mix_format->nBlockAlign);
diff --git a/sys/wasapi/gstwasapisrc.c b/sys/wasapi/gstwasapisrc.c
index 387c373..aa6f012 100644
--- a/sys/wasapi/gstwasapisrc.c
+++ b/sys/wasapi/gstwasapisrc.c
@@ -549,10 +549,17 @@
GST_OBJECT_UNLOCK (self);
while (wanted > 0) {
+ DWORD dwWaitResult;
guint have_frames, n_frames, want_frames, read_len;
/* Wait for data to become available */
- WaitForSingleObject (self->event_handle, INFINITE);
+ dwWaitResult = WaitForSingleObject (self->event_handle, INFINITE);
+ if (dwWaitResult != WAIT_OBJECT_0) {
+ GST_ERROR_OBJECT (self, "Error waiting for event handle: %x",
+ (guint) dwWaitResult);
+ length = 0;
+ goto beach;
+ }
hr = IAudioCaptureClient_GetBuffer (self->capture_client,
(BYTE **) & from, &have_frames, &flags, NULL, NULL);