wined3d: Move destroying the glsl vshader into a separate function.

This commit is contained in:
Stefan Dösinger 2007-11-20 17:03:21 +01:00 committed by Alexandre Julliard
parent bf03075b5e
commit af4edef5e1
1 changed files with 16 additions and 13 deletions

View File

@ -445,13 +445,7 @@ static ULONG WINAPI IWineD3DVertexShaderImpl_AddRef(IWineD3DVertexShader *iface
return IWineD3DBaseShaderImpl_AddRef((IWineD3DBaseShader *) iface);
}
static ULONG WINAPI IWineD3DVertexShaderImpl_Release(IWineD3DVertexShader *iface) {
IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)iface;
ULONG ref;
ref = IWineD3DBaseShaderImpl_Release((IWineD3DBaseShader *) iface);
if (ref == 0) {
if (This->baseShader.shader_mode == SHADER_GLSL && This->baseShader.prgId != 0) {
static void destroy_glsl_vshader(IWineD3DVertexShaderImpl *This) {
struct list *linked_programs = &This->baseShader.linked_programs;
TRACE("Deleting linked programs\n");
@ -466,6 +460,15 @@ static ULONG WINAPI IWineD3DVertexShaderImpl_Release(IWineD3DVertexShader *iface
GL_EXTCALL(glDeleteObjectARB(This->baseShader.prgId));
checkGLcall("glDeleteObjectARB");
}
static ULONG WINAPI IWineD3DVertexShaderImpl_Release(IWineD3DVertexShader *iface) {
IWineD3DVertexShaderImpl *This = (IWineD3DVertexShaderImpl *)iface;
ULONG ref;
ref = IWineD3DBaseShaderImpl_Release((IWineD3DBaseShader *) iface);
if (ref == 0) {
if (This->baseShader.shader_mode == SHADER_GLSL && This->baseShader.prgId != 0) {
destroy_glsl_vshader(This);
}
HeapFree(GetProcessHeap(), 0, This);
}
return ref;