(D3D) Free vertex declaration in d3d_vertex_buffer_free

This commit is contained in:
twinaphex 2015-04-05 17:05:53 +02:00
parent d1af8742f6
commit 74a1920fda
4 changed files with 22 additions and 15 deletions

View File

@ -147,11 +147,26 @@ void *d3d_vertex_buffer_lock(LPDIRECT3DVERTEXBUFFER vertbuf)
return buf;
}
void d3d_vertex_buffer_free(LPDIRECT3DVERTEXBUFFER buf)
void d3d_vertex_buffer_free(void *vertex_data, void *vertex_declaration)
{
#ifdef HAVE_D3D9
LPDIRECT3DVERTEXDECLARATION vertex_decl = (LPDIRECT3DVERTEXDECLARATION)vertex_declaration;
#endif
LPDIRECT3DVERTEXBUFFER buf = (LPDIRECT3DVERTEXBUFFER)vertex_data;
if (buf)
{
buf->Release();
buf = NULL;
buf = NULL;
}
#ifdef HAVE_D3D9
if (vertex_decl)
{
vertex_decl->Release();
vertex_decl = NULL;
}
#endif
}
void d3d_set_stream_source(LPDIRECT3DDEVICE dev, unsigned stream_no,

View File

@ -29,7 +29,7 @@ LPDIRECT3DVERTEXBUFFER d3d_vertex_buffer_new(LPDIRECT3DDEVICE dev,
void *d3d_vertex_buffer_lock(LPDIRECT3DVERTEXBUFFER vertbuf);
void d3d_vertex_buffer_unlock(LPDIRECT3DVERTEXBUFFER vertbuf);
void d3d_vertex_buffer_free(LPDIRECT3DVERTEXBUFFER buf);
void d3d_vertex_buffer_free(void *vertex_data, void *vertex_declaration);
LPDIRECT3DTEXTURE d3d_texture_new(LPDIRECT3DDEVICE dev,
const char *path, unsigned width, unsigned height,

View File

@ -773,7 +773,7 @@ void renderchain_clear(void *data)
if (chain->prev.tex[i])
d3d_texture_free(chain->prev.tex[i]);
if (chain->prev.vertex_buf[i])
d3d_vertex_buffer_free(chain->prev.vertex_buf[i]);
d3d_vertex_buffer_free(chain->prev.vertex_buf[i], NULL);
}
if (chain->passes[0].vertex_decl)
@ -783,10 +783,8 @@ void renderchain_clear(void *data)
{
if (chain->passes[i].tex)
d3d_texture_free(chain->passes[i].tex);
if (chain->passes[i].vertex_buf)
d3d_vertex_buffer_free(chain->passes[i].vertex_buf);
if (chain->passes[i].vertex_decl)
chain->passes[i].vertex_decl->Release();
if (chain->passes[i].vertex_buf || chain->passes[i].vertex_decl)
d3d_vertex_buffer_free(chain->passes[i].vertex_buf, chain->passes[i].vertex_decl);
renderchain_destroy_shader(chain, i);
}

View File

@ -25,13 +25,7 @@ static void renderchain_clear(void *data)
d3d_video_t *d3d = (d3d_video_t*)data;
d3d_texture_free(d3d->tex);
d3d_vertex_buffer_free(d3d->vertex_buf);
#ifdef _XBOX360
if (d3d->vertex_decl)
d3d->vertex_decl->Release();
d3d->vertex_decl = NULL;
#endif
d3d_vertex_buffer_free(d3d->vertex_buf, d3d->vertex_decl);
}
static void renderchain_free(void *data)