Ziqing Hui : windowscodecs: Implement DdsFrameEncode_SetPixelFormat.
Module: wine Branch: master Commit: 92ad4a18e3d27e4b065ce6cf1c2afcdadbc2936a URL: https://source.winehq.org/git/wine.git/?a=commit;h=92ad4a18e3d27e4b065ce6cf1... Author: Ziqing Hui <zhui(a)codeweavers.com> Date: Sat May 29 08:27:13 2021 +0800 windowscodecs: Implement DdsFrameEncode_SetPixelFormat. Signed-off-by: Ziqing Hui <zhui(a)codeweavers.com> Signed-off-by: Esme Povirk <esme(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/windowscodecs/ddsformat.c | 26 ++++++++++++++++++++++++-- dlls/windowscodecs/tests/ddsformat.c | 7 ++----- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/dlls/windowscodecs/ddsformat.c b/dlls/windowscodecs/ddsformat.c index eea5235faba..f94f6708c2b 100644 --- a/dlls/windowscodecs/ddsformat.c +++ b/dlls/windowscodecs/ddsformat.c @@ -1651,8 +1651,30 @@ static HRESULT WINAPI DdsFrameEncode_SetResolution(IWICBitmapFrameEncode *iface, static HRESULT WINAPI DdsFrameEncode_SetPixelFormat(IWICBitmapFrameEncode *iface, WICPixelFormatGUID *pixelFormat) { - FIXME("(%p,%s): stub\n", iface, debugstr_guid(pixelFormat)); - return E_NOTIMPL; + DdsFrameEncode *This = impl_from_IWICBitmapFrameEncode(iface); + HRESULT hr; + + TRACE("(%p,%s)\n", iface, debugstr_guid(pixelFormat)); + + EnterCriticalSection(&This->parent->lock); + + if (!This->initialized) + { + hr = WINCODEC_ERR_NOTINITIALIZED; + } + else if (This->frame_created) + { + hr = WINCODEC_ERR_WRONGSTATE; + } + else + { + *pixelFormat = GUID_WICPixelFormat32bppBGRA; + hr = S_OK; + } + + LeaveCriticalSection(&This->parent->lock); + + return hr; } static HRESULT WINAPI DdsFrameEncode_SetColorContexts(IWICBitmapFrameEncode *iface, diff --git a/dlls/windowscodecs/tests/ddsformat.c b/dlls/windowscodecs/tests/ddsformat.c index 182031f2d3a..06cd062e962 100644 --- a/dlls/windowscodecs/tests/ddsformat.c +++ b/dlls/windowscodecs/tests/ddsformat.c @@ -1519,7 +1519,6 @@ static void test_dds_encoder_pixel_format(void) IWICBitmapEncoder_CreateNewFrame(encoder, &frame, NULL); hr = IWICBitmapFrameEncode_SetPixelFormat(frame, &format); - todo_wine ok(hr == WINCODEC_ERR_NOTINITIALIZED, "SetPixelFormat got unexpected hr %#x\n", hr); IWICBitmapFrameEncode_Initialize(frame, NULL); @@ -1528,11 +1527,9 @@ static void test_dds_encoder_pixel_format(void) { format = *(test_formats[j]); hr = IWICBitmapFrameEncode_SetPixelFormat(frame, &format); - todo_wine ok(hr == S_OK, "Test %u: SetPixelFormat failed, hr %#x\n", j, hr); - if (hr == S_OK) - ok(IsEqualGUID(&format, &GUID_WICPixelFormat32bppBGRA), - "Test %u: Got unexpected GUID %s\n", j, debugstr_guid(&format)); + ok(IsEqualGUID(&format, &GUID_WICPixelFormat32bppBGRA), + "Test %u: Got unexpected GUID %s\n", j, debugstr_guid(&format)); } IWICBitmapFrameEncode_Release(frame);
participants (1)
-
Alexandre Julliard