diff options
-rw-r--r-- | source/blender/gpu/intern/gpu_extensions.c | 5 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 9 |
2 files changed, 13 insertions, 1 deletions
diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c index c6b8a43918c..49f9fbebf56 100644 --- a/source/blender/gpu/intern/gpu_extensions.c +++ b/source/blender/gpu/intern/gpu_extensions.c @@ -91,6 +91,11 @@ void GPU_extensions_init() GLint r, g, b; 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; + glewInit(); /* glewIsSupported("GL_VERSION_2_0") */ diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index 69a29092058..bbbe49ce3dd 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -63,6 +63,7 @@ #include "PIL_time.h" #include "GPU_draw.h" +#include "GPU_extensions.h" /* the global to talk to ghost */ GHOST_SystemHandle g_system= NULL; @@ -320,6 +321,8 @@ static void wm_window_add_ghostwindow(bContext *C, char *title, wmWindow *win) 0 /* no AA */); if (ghostwin) { + /* needed so we can detect the graphics card below */ + GPU_extensions_init(); /* set the state*/ GHOST_SetWindowState(ghostwin, initial_state); @@ -332,7 +335,11 @@ static void wm_window_add_ghostwindow(bContext *C, char *title, wmWindow *win) /* until screens get drawn, make it nice grey */ glClearColor(.55, .55, .55, 0.0); - glClear(GL_COLOR_BUFFER_BIT); + /* Crash on OSS ATI: bugs.launchpad.net/ubuntu/+source/mesa/+bug/656100 */ + if(!GPU_type_matches(GPU_DEVICE_ATI, GPU_OS_UNIX, GPU_DRIVER_OPENSOURCE)) { + glClear(GL_COLOR_BUFFER_BIT); + } + wm_window_swap_buffers(win); //GHOST_SetWindowState(ghostwin, GHOST_kWindowStateModified); |