From: Elizabeth Figura zfigura@codeweavers.com
In that case we will always request a surface with the current width, height, and pixel format, and "rect" must be NULL and cannot affect it. --- dlls/amstream/ddrawstream.c | 50 ++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 26 deletions(-)
diff --git a/dlls/amstream/ddrawstream.c b/dlls/amstream/ddrawstream.c index f8ab333975a..bd0ae962e36 100644 --- a/dlls/amstream/ddrawstream.c +++ b/dlls/amstream/ddrawstream.c @@ -2356,6 +2356,30 @@ static HRESULT ddrawstreamsample_create(struct ddraw_stream *parent, IDirectDraw { object->surface = surface; IDirectDrawSurface_AddRef(surface); + + desc.dwSize = sizeof(desc); + if (FAILED(hr = IDirectDrawSurface_GetSurfaceDesc(object->surface, &desc))) + { + IDirectDrawStreamSample_Release(&object->IDirectDrawStreamSample_iface); + return hr; + } + + if (rect) + { + object->rect = *rect; + desc.dwWidth = rect->right - rect->left; + desc.dwHeight = rect->bottom - rect->top; + } + else + { + SetRect(&object->rect, 0, 0, desc.dwWidth, desc.dwHeight); + } + + if (FAILED(hr = IDirectDrawMediaStream_SetFormat(&parent->IDirectDrawMediaStream_iface, &desc, NULL))) + { + IDirectDrawStreamSample_Release(&object->IDirectDrawStreamSample_iface); + return hr; + } } else { @@ -2399,32 +2423,6 @@ static HRESULT ddrawstreamsample_create(struct ddraw_stream *parent, IDirectDraw } }
- desc.dwSize = sizeof(desc); - hr = IDirectDrawSurface_GetSurfaceDesc(object->surface, &desc); - if (FAILED(hr)) - { - IDirectDrawStreamSample_Release(&object->IDirectDrawStreamSample_iface); - return hr; - } - - if (rect) - { - object->rect = *rect; - desc.dwWidth = rect->right - rect->left; - desc.dwHeight = rect->bottom - rect->top; - } - else - { - SetRect(&object->rect, 0, 0, desc.dwWidth, desc.dwHeight); - } - - hr = IDirectDrawMediaStream_SetFormat(&parent->IDirectDrawMediaStream_iface, &desc, NULL); - if (FAILED(hr)) - { - IDirectDrawStreamSample_Release(&object->IDirectDrawStreamSample_iface); - return hr; - } - *ddraw_stream_sample = &object->IDirectDrawStreamSample_iface;
return S_OK;