Akihiro Sagawa : strmbase: Allow NULL pin_get_media_type() callback in source_Connect().

Alexandre Julliard julliard at winehq.org
Wed May 20 15:35:39 CDT 2020


Module: wine
Branch: master
Commit: b9dc3324d7aa3397aa71e108e3e1fb5491eee525
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=b9dc3324d7aa3397aa71e108e3e1fb5491eee525

Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date:   Wed May 20 23:36:01 2020 +0900

strmbase: Allow NULL pin_get_media_type() callback in source_Connect().

Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/strmbase/pin.c | 17 ++++++++++-------
 1 file changed, 10 insertions(+), 7 deletions(-)

diff --git a/dlls/strmbase/pin.c b/dlls/strmbase/pin.c
index b5f8092e9e..eab7c0cb2e 100644
--- a/dlls/strmbase/pin.c
+++ b/dlls/strmbase/pin.c
@@ -516,17 +516,20 @@ static HRESULT WINAPI source_Connect(IPin *iface, IPin *peer, const AM_MEDIA_TYP
         return hr;
     }
 
-    for (i = 0; pin->pFuncsTable->base.pin_get_media_type(&pin->pin, i, &candidate) == S_OK; ++i)
+    if (pin->pFuncsTable->base.pin_get_media_type)
     {
-        strmbase_dump_media_type(&candidate);
-        if (compare_media_types(mt, &candidate)
-                && pin->pFuncsTable->pfnAttemptConnection(pin, peer, &candidate) == S_OK)
+        for (i = 0; pin->pFuncsTable->base.pin_get_media_type(&pin->pin, i, &candidate) == S_OK; ++i)
         {
-            LeaveCriticalSection(&pin->pin.filter->csFilter);
+            strmbase_dump_media_type(&candidate);
+            if (compare_media_types(mt, &candidate)
+                    && pin->pFuncsTable->pfnAttemptConnection(pin, peer, &candidate) == S_OK)
+            {
+                LeaveCriticalSection(&pin->pin.filter->csFilter);
+                FreeMediaType(&candidate);
+                return S_OK;
+            }
             FreeMediaType(&candidate);
-            return S_OK;
         }
-        FreeMediaType(&candidate);
     }
 
     if (SUCCEEDED(IPin_EnumMediaTypes(peer, &enummt)))




More information about the wine-cvs mailing list