From 8cb96298e3f286327c4ada8895c90c683b88d4c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stefan=20D=C3=B6singer?= Date: Thu, 18 Mar 2010 12:05:02 +0100 Subject: [PATCH 01/15] 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); -- 1.6.4.4