[PATCH 5/6] winegstreamer: Simplify wm_asyncreader stream loop exit code path.

Rémi Bernon wine at gitlab.winehq.org
Fri Jun 10 11:05:05 CDT 2022


From: Rémi Bernon <rbernon at codeweavers.com>

Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
 dlls/winegstreamer/wm_asyncreader.c | 32 +++++++++++------------------
 1 file changed, 12 insertions(+), 20 deletions(-)

diff --git a/dlls/winegstreamer/wm_asyncreader.c b/dlls/winegstreamer/wm_asyncreader.c
index 15e7c2dc9ca..fbfbd38f99e 100644
--- a/dlls/winegstreamer/wm_asyncreader.c
+++ b/dlls/winegstreamer/wm_asyncreader.c
@@ -102,15 +102,10 @@ static DWORD WINAPI stream_thread(void *arg)
                 IWMReaderCallbackAdvanced_OnTime(reader->reader.callback_advanced, user_time, reader->context);
             while (pts > reader->user_time && reader->running)
                 SleepConditionVariableCS(&reader->stream_cv, &reader->stream_cs, INFINITE);
-            if (!reader->running)
-            {
-                INSSBuffer_Release(sample);
-                goto out;
-            }
         }
         else
         {
-            for (;;)
+            while (reader->running)
             {
                 REFERENCE_TIME current_time = get_current_time(reader);
 
@@ -119,22 +114,20 @@ static DWORD WINAPI stream_thread(void *arg)
 
                 SleepConditionVariableCS(&reader->stream_cv, &reader->stream_cs,
                         (pts - (current_time - start_time)) / 10000);
-
-                if (!reader->running)
-                {
-                    INSSBuffer_Release(sample);
-                    goto out;
-                }
             }
         }
 
-        if (stream->read_compressed)
-            hr = IWMReaderCallbackAdvanced_OnStreamSample(reader->reader.callback_advanced,
-                    stream_number, pts, duration, flags, sample, reader->context);
-        else
-            hr = IWMReaderCallback_OnSample(callback, stream_number - 1, pts, duration,
-                    flags, sample, reader->context);
-        TRACE("Callback returned %#lx.\n", hr);
+        if (reader->running)
+        {
+            if (stream->read_compressed)
+                hr = IWMReaderCallbackAdvanced_OnStreamSample(reader->reader.callback_advanced,
+                        stream_number, pts, duration, flags, sample, reader->context);
+            else
+                hr = IWMReaderCallback_OnSample(callback, stream_number - 1, pts, duration,
+                        flags, sample, reader->context);
+            TRACE("Callback returned %#lx.\n", hr);
+        }
+
         INSSBuffer_Release(sample);
     }
 
@@ -161,7 +154,6 @@ static DWORD WINAPI stream_thread(void *arg)
         ERR("Failed to get sample, hr %#lx.\n", hr);
     }
 
-out:
     LeaveCriticalSection(&reader->stream_cs);
 
     TRACE("Reader is stopping; exiting.\n");
-- 
GitLab


https://gitlab.winehq.org/wine/wine/-/merge_requests/226



More information about the wine-devel mailing list