[PATCH 3/5] wined3d: Move the present() back buffer check to the common wined3d_swapchain_present() code.
Henri Verbeet
hverbeet at codeweavers.com
Sun Apr 15 11:57:13 CDT 2012
---
dlls/wined3d/swapchain.c | 27 ++++++++++++---------------
dlls/wined3d/wined3d_private.h | 2 +-
2 files changed, 13 insertions(+), 16 deletions(-)
diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c
index 2674ce6..0e363a5 100644
--- a/dlls/wined3d/swapchain.c
+++ b/dlls/wined3d/swapchain.c
@@ -145,10 +145,17 @@ HRESULT CDECL wined3d_swapchain_present(struct wined3d_swapchain *swapchain,
swapchain, wine_dbgstr_rect(src_rect), wine_dbgstr_rect(dst_rect),
dst_window_override, dirty_region, flags);
+ if (!swapchain->back_buffers)
+ {
+ WARN("Swapchain doesn't have a backbuffer, returning WINED3DERR_INVALIDCALL\n");
+ return WINED3DERR_INVALIDCALL;
+ }
+
wined3d_swapchain_set_window(swapchain, dst_window_override);
- return swapchain->swapchain_ops->swapchain_present(swapchain,
- src_rect, dst_rect, dirty_region, flags);
+ swapchain->swapchain_ops->swapchain_present(swapchain, src_rect, dst_rect, dirty_region, flags);
+
+ return WINED3D_OK;
}
HRESULT CDECL wined3d_swapchain_get_front_buffer_data(const struct wined3d_swapchain *swapchain,
@@ -446,7 +453,7 @@ static void swapchain_blit(const struct wined3d_swapchain *swapchain,
}
}
-static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT *src_rect_in,
+static void swapchain_gl_present(struct wined3d_swapchain *swapchain, const RECT *src_rect_in,
const RECT *dst_rect_in, const RGNDATA *dirty_region, DWORD flags)
{
struct wined3d_surface *back_buffer = swapchain->back_buffers[0];
@@ -461,7 +468,7 @@ static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const R
{
context_release(context);
WARN("Invalid context, skipping present.\n");
- return WINED3D_OK;
+ return;
}
gl_info = context->gl_info;
@@ -685,9 +692,6 @@ static HRESULT swapchain_gl_present(struct wined3d_swapchain *swapchain, const R
}
context_release(context);
-
- TRACE("returning\n");
- return WINED3D_OK;
}
static const struct wined3d_swapchain_ops swapchain_gl_ops =
@@ -740,16 +744,11 @@ void x11_copy_to_screen(const struct wined3d_swapchain *swapchain, const RECT *r
ReleaseDC(window, dst_dc);
}
-static HRESULT swapchain_gdi_present(struct wined3d_swapchain *swapchain, const RECT *src_rect_in,
+static void swapchain_gdi_present(struct wined3d_swapchain *swapchain, const RECT *src_rect_in,
const RECT *dst_rect_in, const RGNDATA *dirty_region, DWORD flags)
{
struct wined3d_surface *front, *back;
- if (!swapchain->back_buffers)
- {
- WARN("Swapchain doesn't have a backbuffer, returning WINED3DERR_INVALIDCALL\n");
- return WINED3DERR_INVALIDCALL;
- }
front = swapchain->front_buffer;
back = swapchain->back_buffers[0];
@@ -806,8 +805,6 @@ static HRESULT swapchain_gdi_present(struct wined3d_swapchain *swapchain, const
}
x11_copy_to_screen(swapchain, NULL);
-
- return WINED3D_OK;
}
static const struct wined3d_swapchain_ops swapchain_gdi_ops =
diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h
index 472c21a..bf99835 100644
--- a/dlls/wined3d/wined3d_private.h
+++ b/dlls/wined3d/wined3d_private.h
@@ -2443,7 +2443,7 @@ struct wined3d_rendertarget_view
struct wined3d_swapchain_ops
{
- HRESULT (*swapchain_present)(struct wined3d_swapchain *swapchain, const RECT *src_rect,
+ void (*swapchain_present)(struct wined3d_swapchain *swapchain, const RECT *src_rect,
const RECT *dst_rect, const RGNDATA *dirty_region, DWORD flags);
};
--
1.7.3.4
More information about the wine-patches
mailing list