Stefan Dösinger : wined3d: Add a function for deleting the GL buffer.
Alexandre Julliard
julliard at winehq.org
Tue Mar 23 12:12:46 CDT 2010
Module: wine
Branch: master
Commit: 5d94fe2095e8f07cad3021e567d67a3d72c3ec8c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5d94fe2095e8f07cad3021e567d67a3d72c3ec8c
Author: Stefan Dösinger <stefan at codeweavers.com>
Date: Thu Mar 18 12:05:02 2010 +0100
wined3d: Add a function for deleting the GL buffer.
---
dlls/wined3d/buffer.c | 26 ++++++++++++++------------
1 files changed, 14 insertions(+), 12 deletions(-)
diff --git a/dlls/wined3d/buffer.c b/dlls/wined3d/buffer.c
index 46798dd..aedade9 100644
--- a/dlls/wined3d/buffer.c
+++ b/dlls/wined3d/buffer.c
@@ -97,6 +97,18 @@ static inline BOOL buffer_is_fully_dirty(struct wined3d_buffer *This)
return FALSE;
}
+/* Context activation is done by the caller */
+static void delete_gl_buffer(struct wined3d_buffer *This)
+{
+ if(!This->buffer_object) return;
+
+ ENTER_GL();
+ GL_EXTCALL(glDeleteBuffersARB(1, &This->buffer_object));
+ checkGLcall("glDeleteBuffersARB");
+ LEAVE_GL();
+ This->buffer_object = 0;
+}
+
/* Context activation is done by the caller. */
static void buffer_create_buffer_object(struct wined3d_buffer *This)
{
@@ -203,13 +215,7 @@ static void buffer_create_buffer_object(struct wined3d_buffer *This)
fail:
/* Clean up all vbo init, but continue because we can work without a vbo :-) */
ERR("Failed to create a vertex buffer object. Continuing, but performance issues may occur\n");
- if (This->buffer_object)
- {
- ENTER_GL();
- GL_EXTCALL(glDeleteBuffersARB(1, &This->buffer_object));
- LEAVE_GL();
- }
- This->buffer_object = 0;
+ delete_gl_buffer(This);
buffer_clear_dirty_areas(This);
}
@@ -691,11 +697,7 @@ static void STDMETHODCALLTYPE buffer_UnLoad(IWineD3DBuffer *iface)
This->flags &= ~WINED3D_BUFFER_DOUBLEBUFFER;
}
- ENTER_GL();
- GL_EXTCALL(glDeleteBuffersARB(1, &This->buffer_object));
- checkGLcall("glDeleteBuffersARB");
- LEAVE_GL();
- This->buffer_object = 0;
+ delete_gl_buffer(This);
This->flags |= WINED3D_BUFFER_CREATEBO; /* Recreate the buffer object next load */
buffer_clear_dirty_areas(This);
More information about the wine-cvs
mailing list