Revision: 58751
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58751
Author:   jwilkins
Date:     2013-07-31 02:32:00 +0000 (Wed, 31 Jul 2013)
Log Message:
-----------
fixed crash at shutdown caused by de-initializing GPU stuff after windows had 
been destroyed

This makes me concerned about contexts and de-initialization.  I think it will 
work OK as long as contexts share 'display lists', but there might still be 
some race conditions caused by resources being managed separately from the 
windows they are associated with...

Modified Paths:
--------------
    branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_Context.h
    
branches/soc-2013-viewport_fx/source/blender/windowmanager/intern/wm_init_exit.c

Modified: branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_Context.h
===================================================================
--- branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_Context.h   
2013-07-31 01:10:34 UTC (rev 58750)
+++ branches/soc-2013-viewport_fx/intern/ghost/intern/GHOST_Context.h   
2013-07-31 02:32:00 UTC (rev 58751)
@@ -143,7 +143,4 @@
 
 
 
-
-
-
 #endif // __GHOST_CONTEXT_H__

Modified: 
branches/soc-2013-viewport_fx/source/blender/windowmanager/intern/wm_init_exit.c
===================================================================
--- 
branches/soc-2013-viewport_fx/source/blender/windowmanager/intern/wm_init_exit.c
    2013-07-31 01:10:34 UTC (rev 58750)
+++ 
branches/soc-2013-viewport_fx/source/blender/windowmanager/intern/wm_init_exit.c
    2013-07-31 02:32:00 UTC (rev 58751)
@@ -136,7 +136,6 @@
 /* only called once, for startup */
 void WM_init(bContext *C, int argc, const char **argv)
 {
-       
        if (!G.background) {
                wm_ghost_init(C);   /* note: it assigns C to ghost! */
                wm_init_cursor_data();
@@ -420,6 +419,20 @@
                wmWindow *win;
 
                if (!G.background) {
+                       GPU_global_buffer_pool_free();
+                       GPU_free_unused_buffers();
+                       GPU_extensions_exit();
+
+                       gpuShutdownLighting();
+
+                       gpuDeleteIndex(gindex);
+                       gpuImmediateIndex(NULL);
+
+                       gpuImmediateMakeCurrent(NULL);
+                       gpuDeleteImmediate(immediate);
+
+                       GPU_ms_exit();
+
                        if ((U.uiflag2 & USER_KEEP_SESSION) || 
BKE_undo_valid(NULL)) {
                                /* save the undo state as quit.blend */
                                char filename[FILE_MAX];
@@ -514,21 +527,6 @@
        (void)do_python;
 #endif
 
-       GPU_global_buffer_pool_free();
-       GPU_free_unused_buffers();
-       GPU_extensions_exit();
-
-
-               gpuShutdownLighting();
-
-               gpuDeleteIndex(gindex);
-               gpuImmediateIndex(NULL);
-
-               gpuImmediateMakeCurrent(NULL);
-               gpuDeleteImmediate(immediate);
-
-               GPU_ms_exit();
-
        BKE_reset_undo(); 
        
        ED_file_exit(); /* for fsmenu */

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to