Module: wine Branch: master Commit: 158a001859ab515a08ebf5204a5375fc0ba2e336 URL: http://source.winehq.org/git/wine.git/?a=commit;h=158a001859ab515a08ebf5204a...
Author: Henri Verbeet hverbeet@codeweavers.com Date: Wed Apr 21 22:02:33 2010 +0200
wined3d: Simply pass an IWineD3DSurfaceImpl pointer to color_fill_fbo().
---
dlls/wined3d/device.c | 29 +++++++++++++++-------------- 1 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 4913805..d2b20c4 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -5449,23 +5449,23 @@ static HRESULT WINAPI IWineD3DDeviceImpl_DeletePatch(IWineD3DDevice *iface, UINT return WINED3DERR_INVALIDCALL; }
-static void color_fill_fbo(IWineD3DDevice *iface, IWineD3DSurface *surface, +static void color_fill_fbo(IWineD3DDevice *iface, IWineD3DSurfaceImpl *surface, const WINED3DRECT *rect, const float color[4]) { IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *) iface; struct wined3d_context *context;
- if (rect) IWineD3DSurface_LoadLocation(surface, SFLAG_INDRAWABLE, NULL); - IWineD3DSurface_ModifyLocation(surface, SFLAG_INDRAWABLE, TRUE); + if (rect) IWineD3DSurface_LoadLocation((IWineD3DSurface *)surface, SFLAG_INDRAWABLE, NULL); + IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, SFLAG_INDRAWABLE, TRUE);
- if (!surface_is_offscreen((IWineD3DSurfaceImpl *)surface)) + if (!surface_is_offscreen(surface)) { TRACE("Surface %p is onscreen\n", surface);
- context = context_acquire(This, (IWineD3DSurfaceImpl *)surface, CTXUSAGE_RESOURCELOAD); + context = context_acquire(This, surface, CTXUSAGE_RESOURCELOAD); ENTER_GL(); context_bind_fbo(context, GL_FRAMEBUFFER, NULL); - context_set_draw_buffer(context, surface_get_gl_buffer((IWineD3DSurfaceImpl *)surface)); + context_set_draw_buffer(context, surface_get_gl_buffer(surface)); } else { @@ -5474,16 +5474,16 @@ static void color_fill_fbo(IWineD3DDevice *iface, IWineD3DSurface *surface, context = context_acquire(This, NULL, CTXUSAGE_RESOURCELOAD); ENTER_GL(); context_bind_fbo(context, GL_FRAMEBUFFER, &context->dst_fbo); - context_attach_surface_fbo(context, GL_FRAMEBUFFER, 0, (IWineD3DSurfaceImpl *)surface); + context_attach_surface_fbo(context, GL_FRAMEBUFFER, 0, surface); context_attach_depth_stencil_fbo(context, GL_FRAMEBUFFER, NULL, FALSE); }
if (rect) { glEnable(GL_SCISSOR_TEST); - if (surface_is_offscreen((IWineD3DSurfaceImpl *)surface)) + if (surface_is_offscreen(surface)) glScissor(rect->x1, rect->y1, rect->x2 - rect->x1, rect->y2 - rect->y1); else - glScissor(rect->x1, ((IWineD3DSurfaceImpl *)surface)->currentDesc.Height - rect->y2, + glScissor(rect->x1, surface->currentDesc.Height - rect->y2, rect->x2 - rect->x1, rect->y2 - rect->y1); checkGLcall("glScissor"); IWineD3DDeviceImpl_MarkStateDirty(This, STATE_SCISSORRECT); @@ -5527,7 +5527,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_ColorFill(IWineD3DDevice *iface,
if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) { const float c[4] = {D3DCOLOR_R(color), D3DCOLOR_G(color), D3DCOLOR_B(color), D3DCOLOR_A(color)}; - color_fill_fbo(iface, pSurface, pRect, c); + color_fill_fbo(iface, surface, pRect, c); return WINED3D_OK; } else { /* Just forward this to the DirectDraw blitting engine */ @@ -5543,7 +5543,7 @@ static void WINAPI IWineD3DDeviceImpl_ClearRendertargetView(IWineD3DDevice *ifac IWineD3DRendertargetView *rendertarget_view, const float color[4]) { IWineD3DResource *resource; - IWineD3DSurface *surface; + IWineD3DSurfaceImpl *surface; HRESULT hr;
hr = IWineD3DRendertargetView_GetResource(rendertarget_view, &resource); @@ -5560,7 +5560,7 @@ static void WINAPI IWineD3DDeviceImpl_ClearRendertargetView(IWineD3DDevice *ifac return; }
- surface = (IWineD3DSurface *)resource; + surface = (IWineD3DSurfaceImpl *)resource;
if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) { @@ -5581,8 +5581,9 @@ static void WINAPI IWineD3DDeviceImpl_ClearRendertargetView(IWineD3DDevice *ifac /* Just forward this to the DirectDraw blitting engine */ memset(&BltFx, 0, sizeof(BltFx)); BltFx.dwSize = sizeof(BltFx); - BltFx.u5.dwFillColor = color_convert_argb_to_fmt(c, ((IWineD3DSurfaceImpl *)surface)->resource.format_desc->format); - hr = IWineD3DSurface_Blt(surface, NULL, NULL, NULL, WINEDDBLT_COLORFILL, &BltFx, WINED3DTEXF_POINT); + BltFx.u5.dwFillColor = color_convert_argb_to_fmt(c, surface->resource.format_desc->format); + hr = IWineD3DSurface_Blt((IWineD3DSurface *)surface, NULL, NULL, NULL, + WINEDDBLT_COLORFILL, &BltFx, WINED3DTEXF_POINT); if (FAILED(hr)) { ERR("Blt failed, hr %#x\n", hr);