[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [25877] trunk/blender/source: - fix for crash if drivers were used in the .B.blend

Campbell Barton ideasman42 at gmail.com
Sun Jan 10 21:01:13 CET 2010


Revision: 25877
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=25877
Author:   campbellbarton
Date:     2010-01-10 21:01:13 +0100 (Sun, 10 Jan 2010)

Log Message:
-----------
- fix for crash if drivers were used in the .B.blend
- fix for problem where proxy objects could enter editmode but not exit

Modified Paths:
--------------
    trunk/blender/source/blender/editors/object/object_edit.c
    trunk/blender/source/blender/python/intern/bpy_interface.c
    trunk/blender/source/blender/windowmanager/WM_api.h
    trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c
    trunk/blender/source/creator/creator.c

Modified: trunk/blender/source/blender/editors/object/object_edit.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_edit.c	2010-01-10 19:56:22 UTC (rev 25876)
+++ trunk/blender/source/blender/editors/object/object_edit.c	2010-01-10 20:01:13 UTC (rev 25877)
@@ -499,6 +499,10 @@
 {
 	Object *ob = CTX_data_active_object(C);
 
+	/* covers proxies too */
+	if(ob->data==NULL || ((ID *)ob->data)->lib)
+		return 0;
+
 	return ob && (ob->type == OB_MESH || ob->type == OB_ARMATURE ||
 		      ob->type == OB_FONT || ob->type == OB_MBALL ||
 		      ob->type == OB_LATTICE || ob->type == OB_SURF ||

Modified: trunk/blender/source/blender/python/intern/bpy_interface.c
===================================================================
--- trunk/blender/source/blender/python/intern/bpy_interface.c	2010-01-10 19:56:22 UTC (rev 25876)
+++ trunk/blender/source/blender/python/intern/bpy_interface.c	2010-01-10 20:01:13 UTC (rev 25877)
@@ -698,8 +698,13 @@
 void BPY_load_user_modules(bContext *C)
 {
 	PyGILState_STATE gilstate;
+	Main *bmain= CTX_data_main(C);
 	Text *text;
 
+	/* can happen on file load */
+	if(bmain==NULL)
+		return;
+
 	bpy_context_set(C, &gilstate);
 
 	for(text=CTX_data_main(C)->text.first; text; text= text->id.next) {

Modified: trunk/blender/source/blender/windowmanager/WM_api.h
===================================================================
--- trunk/blender/source/blender/windowmanager/WM_api.h	2010-01-10 19:56:22 UTC (rev 25876)
+++ trunk/blender/source/blender/windowmanager/WM_api.h	2010-01-10 20:01:13 UTC (rev 25877)
@@ -50,7 +50,7 @@
 /* general API */
 void		WM_setprefsize		(int stax, int stay, int sizx, int sizy);
 
-void		WM_init				(struct bContext *C);
+void		WM_init				(struct bContext *C, int argc, char **argv);
 void		WM_exit				(struct bContext *C);
 void		WM_main				(struct bContext *C);
 

Modified: trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c	2010-01-10 19:56:22 UTC (rev 25876)
+++ trunk/blender/source/blender/windowmanager/intern/wm_init_exit.c	2010-01-10 20:01:13 UTC (rev 25877)
@@ -106,9 +106,9 @@
 
 
 /* only called once, for startup */
-void WM_init(bContext *C)
+void WM_init(bContext *C, int argc, char **argv)
 {
-	
+
 	if (!G.background) {
 		wm_ghost_init(C);	/* note: it assigns C to ghost! */
 		wm_init_cursor_data();
@@ -129,9 +129,18 @@
 	
 	init_builtin_keyingsets(); /* editors/animation/keyframing.c */
 	
+	/* python needs initializing before loading the .B.blend
+	 * because it may contain PyDrivers. It also needs to be after
+	 * initializing space types and other internal data */
+#ifndef DISABLE_PYTHON
+	BPY_set_context(C); /* necessary evil */
+	BPY_start_python(argc, argv);
+	BPY_load_user_modules(C);
+#endif
+
 	/* get the default database, plus a wm */
 	WM_read_homefile(C, NULL);
-	
+
 	wm_init_reports(C); /* reports cant be initialized before the wm */
 
 	if (!G.background) {

Modified: trunk/blender/source/creator/creator.c
===================================================================
--- trunk/blender/source/creator/creator.c	2010-01-10 19:56:22 UTC (rev 25876)
+++ trunk/blender/source/creator/creator.c	2010-01-10 20:01:13 UTC (rev 25877)
@@ -493,13 +493,7 @@
 			}
 		}
 
-		WM_init(C);
-
-#ifndef DISABLE_PYTHON
-		BPY_set_context(C); /* necessary evil */
-		BPY_start_python(argc, argv);
-		BPY_load_user_modules(C);
-#endif
+		WM_init(C, argc, argv);
 		
 		// XXX BRECHT SOLVE
 		BLI_where_is_temp( btempdir, 1 ); /* call after loading the .B.blend so we can read U.tempdir */
@@ -539,13 +533,8 @@
 			}
 		}
 
-		WM_init(C);
+		WM_init(C, argc, argv);
 
-#ifndef DISABLE_PYTHON
-		BPY_set_context(C); /* necessary evil */
-		BPY_start_python(argc, argv);
-		BPY_load_user_modules(C);
-#endif		
 		BLI_where_is_temp( btempdir, 0 ); /* call after loading the .B.blend so we can read U.tempdir */
 	}
 #ifndef DISABLE_PYTHON





More information about the Bf-blender-cvs mailing list