diff --git a/dlls/windowscodecs/jpegformat.c b/dlls/windowscodecs/jpegformat.c index 57008fdf40e..2ae1fc791d1 100644 --- a/dlls/windowscodecs/jpegformat.c +++ b/dlls/windowscodecs/jpegformat.c @@ -728,6 +728,7 @@ typedef struct JpegEncoder { int frame_initialized; int started_compress; UINT width, height; + double xres, yres; const jpeg_compress_format *format; IStream *stream; CRITICAL_SECTION lock; @@ -874,8 +875,23 @@ static HRESULT WINAPI JpegEncoder_Frame_SetSize(IWICBitmapFrameEncode *iface, static HRESULT WINAPI JpegEncoder_Frame_SetResolution(IWICBitmapFrameEncode *iface, double dpiX, double dpiY) { - FIXME("(%p,%0.2f,%0.2f): stub\n", iface, dpiX, dpiY); - return E_NOTIMPL; + JpegEncoder *This = impl_from_IWICBitmapFrameEncode(iface); + TRACE("(%p,%0.2f,%0.2f)\n", iface, dpiX, dpiY); + + EnterCriticalSection(&This->lock); + + if (!This->frame_initialized || This->started_compress) + { + LeaveCriticalSection(&This->lock); + return WINCODEC_ERR_WRONGSTATE; + } + + This->xres = dpiX; + This->yres = dpiY; + + LeaveCriticalSection(&This->lock); + + return S_OK; } static HRESULT WINAPI JpegEncoder_Frame_SetPixelFormat(IWICBitmapFrameEncode *iface, @@ -1213,6 +1229,7 @@ HRESULT JpegEncoder_CreateInstance(IUnknown *pUnkOuter, REFIID iid, void** ppv) This->frame_initialized = 0; This->started_compress = 0; This->width = This->height = 0; + This->xres = This->yres = 0.0; This->format = NULL; This->stream = NULL; InitializeCriticalSection(&This->lock);