[PATCH 2/5] wined3d: Use wined3d_surface_blt() in wined3d_swapchain_get_front_buffer_data().
Henri Verbeet
hverbeet at codeweavers.com
Wed Nov 2 16:46:53 CDT 2011
---
dlls/wined3d/swapchain.c | 17 ++++++++++++-----
1 files changed, 12 insertions(+), 5 deletions(-)
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 7141165..e31b622 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -154,16 +154,23 @@ HRESULT CDECL wined3d_swapchain_present(struct wined3d_swapchain *swapchain,
HRESULT CDECL wined3d_swapchain_get_front_buffer_data(const struct wined3d_swapchain *swapchain,
struct wined3d_surface *dst_surface)
{
- POINT offset = {0, 0};
+ struct wined3d_surface *src_surface;
+ RECT src_rect, dst_rect;
TRACE("swapchain %p, dst_surface %p.\n", swapchain, dst_surface);
- if (swapchain->presentParms.Windowed)
- MapWindowPoints(swapchain->win_handle, NULL, &offset, 1);
+ src_surface = swapchain->front_buffer;
+ SetRect(&src_rect, 0, 0, src_surface->resource.width, src_surface->resource.height);
+ dst_rect = src_rect;
- surface_bltfast(dst_surface, offset.x, offset.y, swapchain->front_buffer, NULL, 0);
+ if (swapchain->presentParms.Windowed)
+ {
+ MapWindowPoints(swapchain->win_handle, NULL, (POINT *)&dst_rect, 2);
+ FIXME("Using destination rect %s in windowed mode, this is likely wrong.\n",
+ wine_dbgstr_rect(&dst_rect));
+ }
- return WINED3D_OK;
+ return wined3d_surface_blt(dst_surface, &dst_rect, src_surface, &src_rect, 0, NULL, WINED3DTEXF_POINT);
}
HRESULT CDECL wined3d_swapchain_get_back_buffer(const struct wined3d_swapchain *swapchain,
--
1.7.3.4
More information about the wine-patches
mailing list