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

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


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

Author: Stefan Dösinger <stefan at codeweavers.com>
Date:   Tue Jan  8 15:23:35 2008 +0100

wined3d: Implement IWineD3DVertexBuffer::UnLoad.

---

 dlls/wined3d/vertexbuffer.c |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/dlls/wined3d/vertexbuffer.c b/dlls/wined3d/vertexbuffer.c
index b8687e0..07ca2a0 100644
--- a/dlls/wined3d/vertexbuffer.c
+++ b/dlls/wined3d/vertexbuffer.c
@@ -597,7 +597,22 @@ static void     WINAPI IWineD3DVertexBufferImpl_PreLoad(IWineD3DVertexBuffer *if
 }
 
 static void WINAPI IWineD3DVertexBufferImpl_UnLoad(IWineD3DVertexBuffer *iface) {
-    IWineD3DResourceImpl_UnLoad((IWineD3DResource *)iface);
+    IWineD3DVertexBufferImpl *This = (IWineD3DVertexBufferImpl *) 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
+     */
+    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 IWineD3DVertexBufferImpl_GetType(IWineD3DVertexBuffer *iface) {




More information about the wine-cvs mailing list