From: Santino Mazza smazza@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);