[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