Module: wine Branch: master Commit: 030008f6cc2907a140588244f767e8b4c6b121a3 URL: https://source.winehq.org/git/wine.git/?a=commit;h=030008f6cc2907a140588244f...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Fri Oct 22 08:24:21 2021 +0300
mfplat: Consider MF_BYTESTREAM_ORIGIN_NAME when looking for bytestream handler.
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/mfplat/main.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-)
diff --git a/dlls/mfplat/main.c b/dlls/mfplat/main.c index 7fd713261fc..5bd19190ed5 100644 --- a/dlls/mfplat/main.c +++ b/dlls/mfplat/main.c @@ -5946,9 +5946,9 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA { static const char streamhandlerspath[] = "Software\Microsoft\Windows Media Foundation\ByteStreamHandlers"; static const HKEY hkey_roots[2] = { HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE }; + WCHAR *mimeW = NULL, *urlW = NULL; IMFAttributes *attributes; const WCHAR *url_ext; - WCHAR *mimeW = NULL; HRESULT hr = E_FAIL; unsigned int i, j; UINT32 length; @@ -5959,6 +5959,11 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA if (SUCCEEDED(IMFByteStream_QueryInterface(stream, &IID_IMFAttributes, (void **)&attributes))) { IMFAttributes_GetAllocatedString(attributes, &MF_BYTESTREAM_CONTENT_TYPE, &mimeW, &length); + if (!url) + { + IMFAttributes_GetAllocatedString(attributes, &MF_BYTESTREAM_ORIGIN_NAME, &urlW, &length); + url = urlW; + } IMFAttributes_Release(attributes); }
@@ -5967,7 +5972,7 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA
if (!url_ext && !mimeW) { - CoTaskMemFree(mimeW); + CoTaskMemFree(urlW); return MF_E_UNSUPPORTED_BYTESTREAM_TYPE; }
@@ -5991,7 +5996,11 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA LeaveCriticalSection(&local_handlers_section);
if (*handler) + { + CoTaskMemFree(mimeW); + CoTaskMemFree(urlW); return hr; + } }
for (i = 0, hr = E_FAIL; i < ARRAY_SIZE(hkey_roots); ++i) @@ -6030,6 +6039,7 @@ static HRESULT resolver_get_bytestream_handler(IMFByteStream *stream, const WCHA }
CoTaskMemFree(mimeW); + CoTaskMemFree(urlW); return hr; }