Revision: 14450
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14450
Author:   campbellbarton
Date:     2008-04-17 16:10:40 +0200 (Thu, 17 Apr 2008)

Log Message:
-----------
Bugfix for [#8962] Blender crashes on joining meshes with python
blenders screen needs initializing before running python scripts when not in 
background mode.

Modified Paths:
--------------
    trunk/blender/source/creator/creator.c

Modified: trunk/blender/source/creator/creator.c
===================================================================
--- trunk/blender/source/creator/creator.c      2008-04-17 12:51:22 UTC (rev 
14449)
+++ trunk/blender/source/creator/creator.c      2008-04-17 14:10:40 UTC (rev 
14450)
@@ -256,9 +256,20 @@
 double PIL_check_seconds_timer(void);
 extern void winlay_get_screensize(int *width_r, int *height_r);
 
+static void main_init_screen( void )
+{
+       setscreen(G.curscreen);
+       
+       if(G.main->scene.first==0) {
+               set_scene( add_scene("1") );
+       }
+
+       screenmain();
+}
+
 int main(int argc, char **argv)
 {
-       int a, i, stax=0, stay=0, sizx, sizy;
+       int a, i, stax=0, stay=0, sizx, sizy, scr_init = 0;
        SYS_SystemHandle syshandle;
        Scene *sce;
 
@@ -649,7 +660,14 @@
                                break;
                        case 'P':
                                a++;
-                               if (a < argc) BPY_run_python_script (argv[a]);
+                               if (a < argc) {
+                                       /* If we're not running in background 
mode, then give python a valid screen */
+                                       if ((G.background==0) && (scr_init==0)) 
{
+                                               main_init_screen();
+                                               scr_init = 1;
+                                       }
+                                       BPY_run_python_script (argv[a]);
+                               }
                                else printf("\nError: you must specify a Python 
script after '-P '.\n");
                                break;
                        case 'o':
@@ -794,16 +812,11 @@
                /* actually incorrect, but works for now (ton) */
                exit_usiblender();
        }
-
-       setscreen(G.curscreen);
-
-       if(G.main->scene.first==0) {
-               sce= add_scene("1");
-               set_scene(sce);
+       
+       if (scr_init==0) {
+               main_init_screen();
        }
 
-       screenmain();
-
        return 0;
 } /* end of int main(argc,argv)        */
 


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

Reply via email to