From 53b65acaf8ffe306958fe65827ef0ce289ea3e8f Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Wed, 23 Sep 2009 17:21:46 -0500 Subject: [PATCH] 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); -- 1.5.4.3