From ac498a6b64ea2f034aa0177894fb25d0401e327b Mon Sep 17 00:00:00 2001 From: Mitchell Stokes Date: Fri, 23 Dec 2011 07:10:01 +0000 Subject: Cleaning up the GPU_extensions_init/exit() code a bit to keep the Blenderplayer from crashing on exit and restart. --- source/blender/gpu/intern/gpu_extensions.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'source/blender/gpu/intern/gpu_extensions.c') diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index eaa661a9dcf..c4ed88635b7 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -45,6 +45,7 @@ #include "GPU_draw.h" #include "GPU_extensions.h" +#include "gpu_codegen.h" #include #include @@ -85,6 +86,8 @@ int GPU_type_matches(GPUDeviceType device, GPUOSType os, GPUDriverType driver) /* GPU Extensions */ +static int gpu_extensions_init = 0; + void GPU_extensions_disable(void) { GG.extdisabled = 1; @@ -96,11 +99,11 @@ void GPU_extensions_init(void) const char *vendor, *renderer; /* can't avoid calling this multiple times, see wm_window_add_ghostwindow */ - static char init= 0; - if(init) return; - init= 1; + if(gpu_extensions_init) return; + gpu_extensions_init= 1; glewInit(); + GPU_codegen_init(); /* glewIsSupported("GL_VERSION_2_0") */ @@ -112,8 +115,6 @@ void GPU_extensions_init(void) if (!GLEW_ARB_vertex_shader) GG.glslsupport = 0; if (!GLEW_ARB_fragment_shader) GG.glslsupport = 0; - GPU_code_generate_glsl_lib(); - glGetIntegerv(GL_RED_BITS, &r); glGetIntegerv(GL_GREEN_BITS, &g); glGetIntegerv(GL_BLUE_BITS, &b); @@ -188,6 +189,12 @@ void GPU_extensions_init(void) #endif } +void GPU_extensions_exit(void) +{ + gpu_extensions_init = 0; + GPU_codegen_exit(); +} + int GPU_glsl_support(void) { return !GG.extdisabled && GG.glslsupport; -- cgit v1.2.3