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);