[PATCH 2/7] uxtheme: Implement EndBufferedPaint()
Nikolay Sivov
nsivov at codeweavers.com
Wed Feb 8 16:42:35 CST 2017
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
dlls/uxtheme/buffer.c | 28 ++++++++++++++++++++++++++--
1 file changed, 26 insertions(+), 2 deletions(-)
diff --git a/dlls/uxtheme/buffer.c b/dlls/uxtheme/buffer.c
index 972df685f7..9024696ba6 100644
--- a/dlls/uxtheme/buffer.c
+++ b/dlls/uxtheme/buffer.c
@@ -49,6 +49,13 @@ static void free_paintbuffer(struct paintbuffer *buffer)
HeapFree(GetProcessHeap(), 0, buffer);
}
+static struct paintbuffer *get_buffer_obj(HPAINTBUFFER handle)
+{
+ if (!handle)
+ return NULL;
+ return handle;
+}
+
/***********************************************************************
* BufferedPaintInit (UXTHEME.@)
*/
@@ -138,9 +145,26 @@ HPAINTBUFFER WINAPI BeginBufferedPaint(HDC targetdc, const RECT *rect,
/***********************************************************************
* EndBufferedPaint (UXTHEME.@)
*/
-HRESULT WINAPI EndBufferedPaint(HPAINTBUFFER hPaintBuffer, BOOL fUpdateTarget)
+HRESULT WINAPI EndBufferedPaint(HPAINTBUFFER bufferhandle, BOOL update)
{
- FIXME("Stub (%p %d)\n", hPaintBuffer, fUpdateTarget);
+ struct paintbuffer *buffer = get_buffer_obj(bufferhandle);
+
+ TRACE("(%p %d)\n", bufferhandle, update);
+
+ if (!buffer)
+ return E_INVALIDARG;
+
+ if (update)
+ {
+ if (!BitBlt(buffer->targetdc, buffer->rect.left, buffer->rect.top,
+ buffer->rect.right - buffer->rect.left, buffer->rect.bottom - buffer->rect.top,
+ buffer->memorydc, 0, 0, SRCCOPY))
+ {
+ WARN("BitBlt() failed\n");
+ }
+ }
+
+ free_paintbuffer(buffer);
return S_OK;
}
--
2.11.0
More information about the wine-patches
mailing list