From: Santino Mazza <smazza(a)codeweavers.com> --- dlls/amstream/ddrawstream.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/dlls/amstream/ddrawstream.c b/dlls/amstream/ddrawstream.c index 10e63681c9e..c67bcd1fc1b 100644 --- a/dlls/amstream/ddrawstream.c +++ b/dlls/amstream/ddrawstream.c @@ -677,21 +677,18 @@ static HRESULT WINAPI ddraw_IDirectDrawMediaStream_SetFormat(IDirectDrawMediaStr if (stream->peer && !is_format_compatible(stream, old_format.width, old_format.height, &old_format.pf)) { - if (stream->using_private_allocator && - (IPin_QueryAccept(stream->peer, &stream->mt) == S_OK)) + if (FAILED(hr = CopyMediaType(&old_media_type, &stream->mt))) { - set_mt_from_desc(&stream->mt, format); + stream->format = old_format; + LeaveCriticalSection(&stream->cs); + return hr; } - else + + set_mt_from_desc(&stream->mt, format); + + if (!stream->using_private_allocator || IPin_QueryAccept(stream->peer, &stream->mt) != S_OK) { /* Reconnect. */ - if (FAILED(hr = CopyMediaType(&old_media_type, &stream->mt))) - { - stream->format = old_format; - LeaveCriticalSection(&stream->cs); - return hr; - } - old_peer = stream->peer; IPin_AddRef(old_peer); @@ -707,8 +704,9 @@ static HRESULT WINAPI ddraw_IDirectDrawMediaStream_SetFormat(IDirectDrawMediaStr return DDERR_INVALIDSURFACETYPE; } IPin_Release(old_peer); - FreeMediaType(&old_media_type); } + + FreeMediaType(&old_media_type); } LeaveCriticalSection(&stream->cs); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/8090