Module: wine Branch: master Commit: 36729a874cd9d45138fa84a607d19388d470358c URL: http://source.winehq.org/git/wine.git/?a=commit;h=36729a874cd9d45138fa84a607...
Author: Stefan Dösinger stefan@codeweavers.com Date: Sat Jan 12 22:57:49 2008 +0100
wined3d: Implement IWineD3DIndexBuffer::UnLoad.
---
dlls/wined3d/indexbuffer.c | 19 ++++++++++++++++++- 1 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/dlls/wined3d/indexbuffer.c b/dlls/wined3d/indexbuffer.c index b5d1597..372b834 100644 --- a/dlls/wined3d/indexbuffer.c +++ b/dlls/wined3d/indexbuffer.c @@ -111,7 +111,24 @@ static void WINAPI IWineD3DIndexBufferImpl_PreLoad(IWineD3DIndexBuffer *iface) { }
static void WINAPI IWineD3DIndexBufferImpl_UnLoad(IWineD3DIndexBuffer *iface) { - IWineD3DResourceImpl_UnLoad((IWineD3DResource *)iface); + IWineD3DIndexBufferImpl *This = (IWineD3DIndexBufferImpl *) iface; + IWineD3DDeviceImpl *device = This->resource.wineD3DDevice; + TRACE("(%p)\n", This); + + /* This is easy: The whole content is shadowed in This->resource.allocatedMemory, + * so we only have to destroy the vbo. Only do it if we have a vbo, which implies + * that vbos are supported. + * (TODO: Make a IWineD3DBuffer base class for index and vertex buffers and share + * this code. Also needed for D3D10) + */ + if(This->vbo) { + ActivateContext(device, device->lastActiveRenderTarget, CTXUSAGE_RESOURCELOAD); + ENTER_GL(); + GL_EXTCALL(glDeleteBuffersARB(1, &This->vbo)); + checkGLcall("glDeleteBuffersARB"); + LEAVE_GL(); + This->vbo = 0; + } }
static WINED3DRESOURCETYPE WINAPI IWineD3DIndexBufferImpl_GetType(IWineD3DIndexBuffer *iface) {