Stefan Dösinger : wined3d: Implement IWineD3DIndexBuffer::UnLoad.

Alexandre Julliard julliard at winehq.org
Mon Jan 14 09:33:19 CST 2008


Module: wine
Branch: master
Commit: 36729a874cd9d45138fa84a607d19388d470358c
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=36729a874cd9d45138fa84a607d19388d470358c

Author: Stefan Dösinger <stefan at 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) {




More information about the wine-cvs mailing list