Module: wine Branch: master Commit: 9d4a00399548f50517d790c7678ebf34327c56d4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=9d4a00399548f50517d790c767...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Thu Feb 9 01:42:35 2017 +0300
uxtheme: Implement EndBufferedPaint().
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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 972df68..9024696 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; }