From 147f24dd7865d8942e3f16ca8acf5dd8f7b7f89f Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Wed, 21 Jul 2010 18:48:21 +0200 Subject: [PATCH] wined3d: Remove ModifyLocation() from the public wined3d surface interface. --- dlls/wined3d/arb_program_shader.c | 2 +- dlls/wined3d/context.c | 2 +- dlls/wined3d/cubetexture.c | 2 +- dlls/wined3d/device.c | 10 ++-- dlls/wined3d/drawprim.c | 8 +-- dlls/wined3d/surface.c | 99 ++++++++++++++++++------------- dlls/wined3d/surface_gdi.c | 11 ---- dlls/wined3d/swapchain.c | 18 +++--- dlls/wined3d/texture.c | 2 +- dlls/wined3d/wined3d_private.h | 1 + include/wine/wined3d.idl | 4 -- 11 files changed, 81 insertions(+), 78 deletions(-) diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 0824fedb571..4482d53835f 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -7166,7 +7166,7 @@ HRESULT arbfp_blit_surface(IWineD3DDeviceImpl *device, IWineD3DSurfaceImpl *src_ context_release(context); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)dst_surface, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(dst_surface, SFLAG_INDRAWABLE, TRUE); return WINED3D_OK; } diff --git a/dlls/wined3d/context.c b/dlls/wined3d/context.c index 8029f4f7261..dafe171a247 100644 --- a/dlls/wined3d/context.c +++ b/dlls/wined3d/context.c @@ -2224,7 +2224,7 @@ static void context_setup_target(IWineD3DDeviceImpl *device, surface_internal_preload(context->current_rt, SRGB_RGB); } - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)context->current_rt, SFLAG_INDRAWABLE, FALSE); + surface_modify_location(context->current_rt, SFLAG_INDRAWABLE, FALSE); device->isInDraw = oldInDraw; } diff --git a/dlls/wined3d/cubetexture.c b/dlls/wined3d/cubetexture.c index 12acee26573..5578dde8f03 100644 --- a/dlls/wined3d/cubetexture.c +++ b/dlls/wined3d/cubetexture.c @@ -84,7 +84,7 @@ static void cubetexture_internal_preload(IWineD3DBaseTexture *iface, enum WINED3 IWineD3DSurface_LoadLocation((IWineD3DSurface *)surface, SFLAG_INSYSMEM, NULL); /* Make sure the texture is reloaded because of the palette change, * this kills performance though :( */ - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, SFLAG_INTEXTURE, FALSE); + surface_modify_location(surface, SFLAG_INTEXTURE, FALSE); } } } diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index 4496393753e..1054216faa0 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -4485,7 +4485,7 @@ HRESULT IWineD3DDeviceImpl_ClearSurface(IWineD3DDeviceImpl *This, IWineD3DSurfac if (location == SFLAG_DS_ONSCREEN && depth_stencil != This->onscreen_depth_stencil) device_switch_onscreen_ds(This, context, depth_stencil); prepare_ds_clear(depth_stencil, context, location, &draw_rect, Count, clear_rect); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)depth_stencil, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(depth_stencil, SFLAG_INDRAWABLE, TRUE); glDepthMask(GL_TRUE); IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_ZWRITEENABLE)); @@ -4496,7 +4496,7 @@ HRESULT IWineD3DDeviceImpl_ClearSurface(IWineD3DDeviceImpl *This, IWineD3DSurfac if (Flags & WINED3DCLEAR_TARGET) { - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(target, SFLAG_INDRAWABLE, TRUE); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); IWineD3DDeviceImpl_MarkStateDirty(This, STATE_RENDER(WINED3DRS_COLORWRITEENABLE)); @@ -5353,7 +5353,7 @@ static HRESULT WINAPI IWineD3DDeviceImpl_UpdateSurface(IWineD3DDevice *iface, LEAVE_GL(); context_release(context); - IWineD3DSurface_ModifyLocation(dst_surface, SFLAG_INTEXTURE, TRUE); + surface_modify_location(dst_impl, SFLAG_INTEXTURE, TRUE); sampler = This->rev_tex_unit_map[0]; if (sampler != WINED3D_UNMAPPED_STAGE) { @@ -5490,7 +5490,7 @@ static void color_fill_fbo(IWineD3DDevice *iface, IWineD3DSurfaceImpl *surface, struct wined3d_context *context; if (rect) IWineD3DSurface_LoadLocation((IWineD3DSurface *)surface, SFLAG_INDRAWABLE, NULL); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(surface, SFLAG_INDRAWABLE, TRUE); context = context_acquire(This, surface); context_apply_clear_state(context, This, surface, NULL); @@ -5848,7 +5848,7 @@ void stretch_rect_fbo(IWineD3DDeviceImpl *device, IWineD3DSurfaceImpl *src_surfa context_release(context); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)dst_surface, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(dst_surface, SFLAG_INDRAWABLE, TRUE); } static HRESULT WINAPI IWineD3DDeviceImpl_SetRenderTarget(IWineD3DDevice *iface, DWORD RenderTargetIndex, IWineD3DSurface *pRenderTarget, diff --git a/dlls/wined3d/drawprim.c b/dlls/wined3d/drawprim.c index 650ddf6504f..a21b8d4336d 100644 --- a/dlls/wined3d/drawprim.c +++ b/dlls/wined3d/drawprim.c @@ -583,11 +583,11 @@ void drawPrimitive(IWineD3DDevice *iface, UINT index_count, UINT StartIdx, UINT /* Invalidate the back buffer memory so LockRect will read it the next time */ for (i = 0; i < This->adapter->gl_info.limits.buffers; ++i) { - IWineD3DSurface *target = (IWineD3DSurface *)This->render_targets[i]; + IWineD3DSurfaceImpl *target = This->render_targets[i]; if (target) { - IWineD3DSurface_LoadLocation(target, SFLAG_INDRAWABLE, NULL); - IWineD3DSurface_ModifyLocation(target, SFLAG_INDRAWABLE, TRUE); + IWineD3DSurface_LoadLocation((IWineD3DSurface *)target, SFLAG_INDRAWABLE, NULL); + surface_modify_location(target, SFLAG_INDRAWABLE, TRUE); } } } @@ -639,7 +639,7 @@ void drawPrimitive(IWineD3DDevice *iface, UINT index_count, UINT StartIdx, UINT surface_modify_ds_location(This->depth_stencil, location, This->depth_stencil->ds_current_size.cx, This->depth_stencil->ds_current_size.cy); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)This->depth_stencil, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(This->depth_stencil, SFLAG_INDRAWABLE, TRUE); } } } diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c index 00aa18855ac..b7d35450570 100644 --- a/dlls/wined3d/surface.c +++ b/dlls/wined3d/surface.c @@ -490,7 +490,7 @@ void surface_set_texture_name(IWineD3DSurfaceImpl *surface, GLuint new_name, BOO * surface has no texture name yet. See if we can get rid of this. */ if (surface->Flags & flag) ERR("Surface has SFLAG_INTEXTURE set, but no texture name\n"); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, flag, FALSE); + surface_modify_location(surface, flag, FALSE); } *name = new_name; @@ -962,7 +962,7 @@ void surface_add_dirty_rect(IWineD3DSurfaceImpl *surface, const RECT *dirty_rect /* No partial locking for textures yet. */ IWineD3DSurface_LoadLocation((IWineD3DSurface *)surface, SFLAG_INSYSMEM, NULL); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, SFLAG_INSYSMEM, TRUE); + surface_modify_location(surface, SFLAG_INSYSMEM, TRUE); if (dirty_rect) { surface->dirtyRect.left = min(surface->dirtyRect.left, dirty_rect->left); @@ -1095,7 +1095,7 @@ void surface_internal_preload(IWineD3DSurfaceImpl *surface, enum WINED3DSRGB srg /* TODO: This is not necessarily needed with hw palettized texture support */ IWineD3DSurface_LoadLocation((IWineD3DSurface *)surface, SFLAG_INSYSMEM, NULL); /* Make sure the texture is reloaded because of the palette change, this kills performance though :( */ - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, SFLAG_INTEXTURE, FALSE); + surface_modify_location(surface, SFLAG_INTEXTURE, FALSE); } } @@ -1159,7 +1159,8 @@ BOOL surface_init_sysmem(IWineD3DSurfaceImpl *surface) memset(surface->resource.allocatedMemory, 0, surface->resource.size); } - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, SFLAG_INSYSMEM, TRUE); + surface_modify_location(surface, SFLAG_INSYSMEM, TRUE); + return TRUE; } @@ -1190,10 +1191,10 @@ static void WINAPI IWineD3DSurfaceImpl_UnLoad(IWineD3DSurface *iface) { { /* Load the surface into system memory */ IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL); - IWineD3DSurface_ModifyLocation(iface, SFLAG_INDRAWABLE, FALSE); + surface_modify_location(This, SFLAG_INDRAWABLE, FALSE); } - IWineD3DSurface_ModifyLocation(iface, SFLAG_INTEXTURE, FALSE); - IWineD3DSurface_ModifyLocation(iface, SFLAG_INSRGBTEX, FALSE); + surface_modify_location(This, SFLAG_INTEXTURE, FALSE); + surface_modify_location(This, SFLAG_INSRGBTEX, FALSE); This->Flags &= ~(SFLAG_ALLOCATED | SFLAG_SRGBALLOCATED); context = context_acquire(device, NULL); @@ -1987,8 +1988,8 @@ static void surface_release_client_storage(IWineD3DSurfaceImpl *surface) LEAVE_GL(); context_release(context); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, SFLAG_INSRGBTEX, FALSE); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, SFLAG_INTEXTURE, FALSE); + surface_modify_location(surface, SFLAG_INSRGBTEX, FALSE); + surface_modify_location(surface, SFLAG_INTEXTURE, FALSE); surface_force_reload(surface); } @@ -2510,7 +2511,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LoadTexture(IWineD3DSurface *iface, BO IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL); /* Make sure the texture is reloaded because of the color key change, this kills performance though :( */ /* TODO: This is not necessarily needed with hw palettized texture support */ - IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE); + surface_modify_location(This, SFLAG_INSYSMEM, TRUE); } else { TRACE("surface is already in texture\n"); return WINED3D_OK; @@ -2533,7 +2534,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_LoadTexture(IWineD3DSurface *iface, BO HeapFree(GetProcessHeap(), 0, This->resource.heapMemory); This->resource.allocatedMemory = NULL; This->resource.heapMemory = NULL; - IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, FALSE); + surface_modify_location(This, SFLAG_INSYSMEM, FALSE); } return WINED3D_OK; @@ -2641,7 +2642,7 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_SetMem(IWineD3DSurface *iface, void *M This->Flags |= SFLAG_USERPTR | SFLAG_INSYSMEM; /* Now the surface memory is most up do date. Invalidate drawable and texture */ - IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE); + surface_modify_location(This, SFLAG_INSYSMEM, TRUE); /* For client textures opengl has to be notified */ if (This->Flags & SFLAG_CLIENT) @@ -2908,7 +2909,7 @@ static void fb_copy_to_texture_direct(IWineD3DSurfaceImpl *dst_surface, IWineD3D /* The texture is now most up to date - If the surface is a render target and has a drawable, this * path is never entered */ - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)dst_surface, SFLAG_INTEXTURE, TRUE); + surface_modify_location(dst_surface, SFLAG_INTEXTURE, TRUE); } /* Uses the hardware to stretch and flip the image */ @@ -3190,7 +3191,7 @@ static void fb_copy_to_texture_hwstretch(IWineD3DSurfaceImpl *dst_surface, IWine /* The texture is now most up to date - If the surface is a render target and has a drawable, this * path is never entered */ - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)dst_surface, SFLAG_INTEXTURE, TRUE); + surface_modify_location(dst_surface, SFLAG_INTEXTURE, TRUE); } /* Until the blit_shader is ready, define some prototypes here. */ @@ -3571,7 +3572,7 @@ static HRESULT IWineD3DSurfaceImpl_BltOverride(IWineD3DSurfaceImpl *dst_surface, /* The surface is now in the drawable. On onscreen surfaces or without fbos the texture * is outdated now */ - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)dst_surface, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(dst_surface, SFLAG_INDRAWABLE, TRUE); return WINED3D_OK; } else { @@ -3766,14 +3767,17 @@ static HRESULT WINAPI IWineD3DSurfaceImpl_RealizePalette(IWineD3DSurface *iface) IWineD3DSurface_LoadLocation(iface, SFLAG_INTEXTURE, NULL); /* We want to force a palette refresh, so mark the drawable as not being up to date */ - IWineD3DSurface_ModifyLocation(iface, SFLAG_INDRAWABLE, FALSE); - } else { - if(!(This->Flags & SFLAG_INSYSMEM)) { + surface_modify_location(This, SFLAG_INDRAWABLE, FALSE); + } + else + { + if (!(This->Flags & SFLAG_INSYSMEM)) + { TRACE("Palette changed with surface that does not have an up to date system memory copy\n"); IWineD3DSurface_LoadLocation(iface, SFLAG_INSYSMEM, NULL); } TRACE("Dirtifying surface\n"); - IWineD3DSurface_ModifyLocation(iface, SFLAG_INSYSMEM, TRUE); + surface_modify_location(This, SFLAG_INSYSMEM, TRUE); } } @@ -4090,58 +4094,70 @@ void surface_load_ds_location(IWineD3DSurfaceImpl *surface, struct wined3d_conte surface->ds_current_size.cy = surface->currentDesc.Height; } -static void WINAPI IWineD3DSurfaceImpl_ModifyLocation(IWineD3DSurface *iface, DWORD flag, BOOL persistent) { - IWineD3DSurfaceImpl *This = (IWineD3DSurfaceImpl *) iface; +void surface_modify_location(IWineD3DSurfaceImpl *surface, DWORD flag, BOOL persistent) +{ IWineD3DBaseTexture *texture; IWineD3DSurfaceImpl *overlay; - TRACE("(%p)->(%s, %s)\n", iface, debug_surflocation(flag), - persistent ? "TRUE" : "FALSE"); + TRACE("surface %p, location %s, persitent %#x.\n", + surface, debug_surflocation(flag), persistent); if (wined3d_settings.offscreen_rendering_mode == ORM_FBO) { - if (surface_is_offscreen(This)) + if (surface_is_offscreen(surface)) { /* With ORM_FBO, SFLAG_INTEXTURE and SFLAG_INDRAWABLE are the same for offscreen targets. */ if (flag & (SFLAG_INTEXTURE | SFLAG_INDRAWABLE)) flag |= (SFLAG_INTEXTURE | SFLAG_INDRAWABLE); } else { - TRACE("Surface %p is an onscreen surface\n", iface); + TRACE("Surface %p is an onscreen surface.\n", surface); } } - if(persistent) { - if(((This->Flags & SFLAG_INTEXTURE) && !(flag & SFLAG_INTEXTURE)) || - ((This->Flags & SFLAG_INSRGBTEX) && !(flag & SFLAG_INSRGBTEX))) { - if (IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **)&texture) == WINED3D_OK) { - TRACE("Passing to container\n"); + if (persistent) + { + if (((surface->Flags & SFLAG_INTEXTURE) && !(flag & SFLAG_INTEXTURE)) + || ((surface->Flags & SFLAG_INSRGBTEX) && !(flag & SFLAG_INSRGBTEX))) + { + if (SUCCEEDED(IWineD3DSurface_GetContainer((IWineD3DSurface *)surface, + &IID_IWineD3DBaseTexture, (void **)&texture))) + { + TRACE("Passing to container.\n"); IWineD3DBaseTexture_SetDirty(texture, TRUE); IWineD3DBaseTexture_Release(texture); } } - This->Flags &= ~SFLAG_LOCATIONS; - This->Flags |= flag; + surface->Flags &= ~SFLAG_LOCATIONS; + surface->Flags |= flag; /* Redraw emulated overlays, if any */ - if(flag & SFLAG_INDRAWABLE && !list_empty(&This->overlays)) { - LIST_FOR_EACH_ENTRY(overlay, &This->overlays, IWineD3DSurfaceImpl, overlay_entry) { - IWineD3DSurface_DrawOverlay((IWineD3DSurface *) overlay); + if (flag & SFLAG_INDRAWABLE && !list_empty(&surface->overlays)) + { + LIST_FOR_EACH_ENTRY(overlay, &surface->overlays, IWineD3DSurfaceImpl, overlay_entry) + { + IWineD3DSurface_DrawOverlay((IWineD3DSurface *)overlay); } } - } else { - if((This->Flags & (SFLAG_INTEXTURE | SFLAG_INSRGBTEX)) && (flag & (SFLAG_INTEXTURE | SFLAG_INSRGBTEX))) { - if (IWineD3DSurface_GetContainer(iface, &IID_IWineD3DBaseTexture, (void **)&texture) == WINED3D_OK) { + } + else + { + if ((surface->Flags & (SFLAG_INTEXTURE | SFLAG_INSRGBTEX)) && (flag & (SFLAG_INTEXTURE | SFLAG_INSRGBTEX))) + { + if (SUCCEEDED(IWineD3DSurface_GetContainer((IWineD3DSurface *)surface, + &IID_IWineD3DBaseTexture, (void **)&texture))) + { TRACE("Passing to container\n"); IWineD3DBaseTexture_SetDirty(texture, TRUE); IWineD3DBaseTexture_Release(texture); } } - This->Flags &= ~flag; + surface->Flags &= ~flag; } - if(!(This->Flags & SFLAG_LOCATIONS)) { - ERR("%p: Surface does not have any up to date location\n", This); + if (!(surface->Flags & SFLAG_LOCATIONS)) + { + ERR("Surface %p does not have any up to date location.\n", surface); } } @@ -4583,7 +4599,6 @@ const IWineD3DSurfaceVtbl IWineD3DSurface_Vtbl = IWineD3DBaseSurfaceImpl_GetData, IWineD3DSurfaceImpl_SetFormat, IWineD3DSurfaceImpl_PrivateSetup, - IWineD3DSurfaceImpl_ModifyLocation, IWineD3DSurfaceImpl_LoadLocation, IWineD3DSurfaceImpl_GetImplType, IWineD3DSurfaceImpl_DrawOverlay diff --git a/dlls/wined3d/surface_gdi.c b/dlls/wined3d/surface_gdi.c index 8e7eb2f82f2..2594e556e10 100644 --- a/dlls/wined3d/surface_gdi.c +++ b/dlls/wined3d/surface_gdi.c @@ -477,16 +477,6 @@ static HRESULT WINAPI IWineGDISurfaceImpl_SetMem(IWineD3DSurface *iface, void *M /*************************** * ***************************/ -static void WINAPI IWineGDISurfaceImpl_ModifyLocation(IWineD3DSurface *iface, DWORD flag, BOOL persistent) { - TRACE("(%p)->(%s, %s)\n", iface, - flag == SFLAG_INSYSMEM ? "SFLAG_INSYSMEM" : flag == SFLAG_INDRAWABLE ? "SFLAG_INDRAWABLE" : "SFLAG_INTEXTURE", - persistent ? "TRUE" : "FALSE"); - /* GDI surfaces can be in system memory only */ - if(flag != SFLAG_INSYSMEM) { - ERR("GDI Surface requested in gl %s memory\n", flag == SFLAG_INDRAWABLE ? "drawable" : "texture"); - } -} - static HRESULT WINAPI IWineGDISurfaceImpl_LoadLocation(IWineD3DSurface *iface, DWORD flag, const RECT *rect) { if(flag != SFLAG_INSYSMEM) { ERR("GDI Surface requested to be copied to gl %s\n", flag == SFLAG_INTEXTURE ? "texture" : "drawable"); @@ -557,7 +547,6 @@ const IWineD3DSurfaceVtbl IWineGDISurface_Vtbl = IWineD3DBaseSurfaceImpl_GetData, IWineD3DBaseSurfaceImpl_SetFormat, IWineGDISurfaceImpl_PrivateSetup, - IWineGDISurfaceImpl_ModifyLocation, IWineGDISurfaceImpl_LoadLocation, IWineGDISurfaceImpl_GetImplType, IWineGDISurfaceImpl_DrawOverlay diff --git a/dlls/wined3d/swapchain.c b/dlls/wined3d/swapchain.c index 6c5326cf1c5..eaeae2f368f 100644 --- a/dlls/wined3d/swapchain.c +++ b/dlls/wined3d/swapchain.c @@ -326,7 +326,7 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO if (!This->render_to_fbo && render_to_fbo && wined3d_settings.offscreen_rendering_mode == ORM_FBO) { IWineD3DSurface_LoadLocation((IWineD3DSurface *)This->back_buffers[0], SFLAG_INTEXTURE, NULL); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)This->back_buffers[0], SFLAG_INDRAWABLE, FALSE); + surface_modify_location(This->back_buffers[0], SFLAG_INDRAWABLE, FALSE); This->render_to_fbo = TRUE; /* Force the context manager to update the render target configuration next draw. */ @@ -408,16 +408,18 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO * This serves to update the emulated overlay, if any */ fbflags = front->Flags; - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)front, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(front, SFLAG_INDRAWABLE, TRUE); front->Flags = fbflags; - } else { - IWineD3DSurface_ModifyLocation((IWineD3DSurface *) front, SFLAG_INDRAWABLE, TRUE); - IWineD3DSurface_ModifyLocation((IWineD3DSurface *) back, SFLAG_INDRAWABLE, TRUE); + } + else + { + surface_modify_location(front, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(back, SFLAG_INDRAWABLE, TRUE); } } else { - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)This->front_buffer, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(This->front_buffer, SFLAG_INDRAWABLE, TRUE); /* If the swapeffect is DISCARD, the back buffer is undefined. That means the SYSMEM * and INTEXTURE copies can keep their old content if they have any defined content. * If the swapeffect is COPY, the content remains the same. If it is FLIP however, @@ -425,7 +427,7 @@ static HRESULT WINAPI IWineD3DSwapChainImpl_Present(IWineD3DSwapChain *iface, CO */ if (This->presentParms.SwapEffect == WINED3DSWAPEFFECT_FLIP) { - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)This->back_buffers[0], SFLAG_INDRAWABLE, TRUE); + surface_modify_location(This->back_buffers[0], SFLAG_INDRAWABLE, TRUE); } } @@ -730,7 +732,7 @@ HRESULT swapchain_init(IWineD3DSwapChainImpl *swapchain, WINED3DSURFTYPE surface swapchain->front_buffer->Flags |= SFLAG_SWAPCHAIN; if (surface_type == SURFACE_OPENGL) { - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)swapchain->front_buffer, SFLAG_INDRAWABLE, TRUE); + surface_modify_location(swapchain->front_buffer, SFLAG_INDRAWABLE, TRUE); } /* MSDN says we're only allowed a single fullscreen swapchain per device, diff --git a/dlls/wined3d/texture.c b/dlls/wined3d/texture.c index 8e8b1916e40..91afa2dedf1 100644 --- a/dlls/wined3d/texture.c +++ b/dlls/wined3d/texture.c @@ -78,7 +78,7 @@ static void texture_internal_preload(IWineD3DBaseTexture *iface, enum WINED3DSRG /* TODO: This is not necessarily needed with hw palettized texture support. */ IWineD3DSurface_LoadLocation((IWineD3DSurface *)surface, SFLAG_INSYSMEM, NULL); /* Make sure the texture is reloaded because of the palette change, this kills performance though :( */ - IWineD3DSurface_ModifyLocation((IWineD3DSurface *)surface, SFLAG_INTEXTURE, FALSE); + surface_modify_location(surface, SFLAG_INTEXTURE, FALSE); } } } diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 87732486e41..91cb2fb56a3 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -2077,6 +2077,7 @@ BOOL surface_is_offscreen(IWineD3DSurfaceImpl *iface) DECLSPEC_HIDDEN; void surface_load_ds_location(IWineD3DSurfaceImpl *surface, struct wined3d_context *context, DWORD location) DECLSPEC_HIDDEN; void surface_modify_ds_location(IWineD3DSurfaceImpl *surface, DWORD location, UINT w, UINT h) DECLSPEC_HIDDEN; +void surface_modify_location(IWineD3DSurfaceImpl *surface, DWORD flag, BOOL persistent) DECLSPEC_HIDDEN; void surface_prepare_texture(IWineD3DSurfaceImpl *surface, const struct wined3d_gl_info *gl_info, BOOL srgb) DECLSPEC_HIDDEN; void surface_set_compatible_renderbuffer(IWineD3DSurfaceImpl *surface, diff --git a/include/wine/wined3d.idl b/include/wine/wined3d.idl index 99de560fb49..12c5c405171 100644 --- a/include/wine/wined3d.idl +++ b/include/wine/wined3d.idl @@ -2491,10 +2491,6 @@ interface IWineD3DSurface : IWineD3DResource ); HRESULT PrivateSetup( ); - void ModifyLocation( - [in] DWORD location, - [in] BOOL persistent - ); HRESULT LoadLocation( [in] DWORD location, [in] const RECT *rect