Module: wine Branch: master Commit: fa97fbdcad4385d2b730bdecdaa4367337a9133f URL: http://source.winehq.org/git/wine.git/?a=commit;h=fa97fbdcad4385d2b730bdecda...
Author: Stefan Dösinger stefan@codeweavers.com Date: Thu Feb 8 22:31:01 2007 +0100
wined3d: Make shader_cleanup more useful.
---
dlls/wined3d/arb_program_shader.c | 8 +++++--- dlls/wined3d/baseshader.c | 2 +- dlls/wined3d/glsl_shader.c | 6 ++++-- dlls/wined3d/wined3d_private.h | 2 +- 4 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/wined3d/arb_program_shader.c b/dlls/wined3d/arb_program_shader.c index 3e4e38a..e6f9510 100644 --- a/dlls/wined3d/arb_program_shader.c +++ b/dlls/wined3d/arb_program_shader.c @@ -986,9 +986,11 @@ static void shader_arb_select_depth_blt( glEnable(GL_FRAGMENT_PROGRAM_ARB); }
-static void shader_arb_cleanup(BOOL usePS, BOOL useVS) { - if (useVS) glDisable(GL_VERTEX_PROGRAM_ARB); - if (usePS) glDisable(GL_FRAGMENT_PROGRAM_ARB); +static void shader_arb_cleanup(IWineD3DDevice *iface) { + IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + WineD3D_GL_Info *gl_info = &((IWineD3DImpl *)(This->wineD3D))->gl_info; + if (GL_SUPPORT(ARB_VERTEX_PROGRAM)) glDisable(GL_VERTEX_PROGRAM_ARB); + if (GL_SUPPORT(ARB_FRAGMENT_PROGRAM)) glDisable(GL_FRAGMENT_PROGRAM_ARB); }
const shader_backend_t arb_program_shader_backend = { diff --git a/dlls/wined3d/baseshader.c b/dlls/wined3d/baseshader.c index 6949be1..8428b47 100644 --- a/dlls/wined3d/baseshader.c +++ b/dlls/wined3d/baseshader.c @@ -980,7 +980,7 @@ void shader_delete_constant_list( static void shader_none_select(IWineD3DDevice *iface, BOOL usePS, BOOL useVS) {} static void shader_none_select_depth_blt(IWineD3DDevice *iface) {} static void shader_none_load_constants(IWineD3DDevice *iface, char usePS, char useVS) {} -static void shader_none_cleanup(BOOL usePS, BOOL useVS) {} +static void shader_none_cleanup(IWineD3DDevice *iface) {}
const shader_backend_t none_shader_backend = { &shader_none_select, diff --git a/dlls/wined3d/glsl_shader.c b/dlls/wined3d/glsl_shader.c index 5fd6c5a..30d0e52 100644 --- a/dlls/wined3d/glsl_shader.c +++ b/dlls/wined3d/glsl_shader.c @@ -2161,8 +2161,10 @@ static void shader_glsl_select_depth_blt GL_EXTCALL(glUniform1iARB(loc, 0)); }
-static void shader_glsl_cleanup(BOOL usePS, BOOL useVS) { - /* Nothing to do */ +static void shader_glsl_cleanup(IWineD3DDevice *iface) { + IWineD3DDeviceImpl *This = (IWineD3DDeviceImpl *)iface; + WineD3D_GL_Info *gl_info = &((IWineD3DImpl *)(This->wineD3D))->gl_info; + GL_EXTCALL(glUseProgramObjectARB(0)); }
const shader_backend_t glsl_shader_backend = { diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index c1c36b0..0008834 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -177,7 +177,7 @@ typedef struct { void (*shader_select)(IWineD3DDevice *iface, BOOL usePS, BOOL useVS); void (*shader_select_depth_blt)(IWineD3DDevice *iface); void (*shader_load_constants)(IWineD3DDevice *iface, char usePS, char useVS); - void (*shader_cleanup)(BOOL usePS, BOOL useVS); + void (*shader_cleanup)(IWineD3DDevice *iface); } shader_backend_t;
extern const shader_backend_t glsl_shader_backend;