Module: wine Branch: master Commit: 3db6ef498097676644c87ad2130552ac98a73a5f URL: http://source.winehq.org/git/wine.git/?a=commit;h=3db6ef498097676644c87ad213...
Author: Vincent Povirk vincent@codeweavers.com Date: Wed Sep 23 17:21:46 2009 -0500
windowscodecs: Implement Commit for the PNG encoder.
---
dlls/windowscodecs/pngformat.c | 13 +++++++++++-- 1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/dlls/windowscodecs/pngformat.c b/dlls/windowscodecs/pngformat.c index 404fa25..6aaca6b 100644 --- a/dlls/windowscodecs/pngformat.c +++ b/dlls/windowscodecs/pngformat.c @@ -715,6 +715,7 @@ typedef struct PngEncoder { double xres, yres; UINT lines_written; BOOL frame_committed; + BOOL committed; } PngEncoder;
static inline PngEncoder *encoder_from_frame(IWICBitmapFrameEncode *iface) @@ -1195,8 +1196,15 @@ static HRESULT WINAPI PngEncoder_CreateNewFrame(IWICBitmapEncoder *iface,
static HRESULT WINAPI PngEncoder_Commit(IWICBitmapEncoder *iface) { - TRACE("(%p): stub\n", iface); - return E_NOTIMPL; + PngEncoder *This = (PngEncoder*)iface; + TRACE("(%p)\n", iface); + + if (!This->frame_committed || This->committed) + return WINCODEC_ERR_WRONGSTATE; + + This->committed = TRUE; + + return S_OK; }
static HRESULT WINAPI PngEncoder_GetMetadataQueryWriter(IWICBitmapEncoder *iface, @@ -1258,6 +1266,7 @@ HRESULT PngEncoder_CreateInstance(IUnknown *pUnkOuter, REFIID iid, void** ppv) This->yres = 0.0; This->lines_written = 0; This->frame_committed = FALSE; + This->committed = FALSE;
ret = IUnknown_QueryInterface((IUnknown*)This, iid, ppv); IUnknown_Release((IUnknown*)This);