[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14558] trunk/blender/source: fix for own error when trying to fix python command line crash,

Campbell Barton ideasman42 at gmail.com
Sun Apr 27 13:37:58 CEST 2008


Revision: 14558
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14558
Author:   campbellbarton
Date:     2008-04-27 13:37:57 +0200 (Sun, 27 Apr 2008)

Log Message:
-----------
fix for own error when trying to fix python command line crash,
was calling screenmain() before executing the python script which meant it was never executed (therefore no crash :) )

Moved screenmain() back to the the end of main() and added a TESTBASELIB_BGMODE which checks for G.vd and uses the scene layer if its not there. Of course python should not be running stuff that uses G.vd :/

Also made python scripts stay attached to screens when LOAD UI is disabled. This means you can load a new blend file and the python console can stay open, has been tested for a while in the apricot branch.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/blender.c
    trunk/blender/source/blender/blenkernel/intern/image.c
    trunk/blender/source/blender/include/blendef.h
    trunk/blender/source/blender/src/meshtools.c
    trunk/blender/source/creator/creator.c

Modified: trunk/blender/source/blender/blenkernel/intern/blender.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/blender.c	2008-04-26 20:41:25 UTC (rev 14557)
+++ trunk/blender/source/blender/blenkernel/intern/blender.c	2008-04-27 11:37:57 UTC (rev 14558)
@@ -330,6 +330,7 @@
 		extern void lib_link_screen_restore(Main *, Scene *);
 		
 		SWAP(ListBase, G.main->screen, bfd->main->screen);
+		SWAP(ListBase, G.main->script, bfd->main->script);
 		
 		/* we re-use current screen */
 		curscreen= G.curscreen;

Modified: trunk/blender/source/blender/blenkernel/intern/image.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/image.c	2008-04-26 20:41:25 UTC (rev 14557)
+++ trunk/blender/source/blender/blenkernel/intern/image.c	2008-04-27 11:37:57 UTC (rev 14558)
@@ -246,7 +246,6 @@
 /* called by library too, do not free ima itself */
 void free_image(Image *ima)
 {
-
 	image_free_buffers(ima);
 	if (ima->packedfile) {
 		freePackedFile(ima->packedfile);
@@ -257,7 +256,6 @@
 	if (ima->preview) {
 		BKE_previewimg_free(&ima->preview);
 	}
-	
 }
 
 /* only image block itself */

Modified: trunk/blender/source/blender/include/blendef.h
===================================================================
--- trunk/blender/source/blender/include/blendef.h	2008-04-26 20:41:25 UTC (rev 14557)
+++ trunk/blender/source/blender/include/blendef.h	2008-04-27 11:37:57 UTC (rev 14558)
@@ -96,6 +96,10 @@
 
 #define TESTBASE(base)	( ((base)->flag & SELECT) && ((base)->lay & G.vd->lay) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0) )
 #define TESTBASELIB(base)	( ((base)->flag & SELECT) && ((base)->lay & G.vd->lay) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
+
+/* This is a TESTBASELIB that can work without a 3D view */
+#define TESTBASELIB_BGMODE(base)	( ((base)->flag & SELECT) && ((base)->lay & (G.vd ? G.vd->lay : G.scene->lay)) && ((base)->object->id.lib==0) && (((base)->object->restrictflag & OB_RESTRICT_VIEW)==0))
+
 #define BASE_SELECTABLE(base)	 ((base->lay & G.vd->lay) && (base->object->restrictflag & (OB_RESTRICT_SELECT|OB_RESTRICT_VIEW))==0)
 #define FIRSTBASE		G.scene->base.first
 #define LASTBASE		G.scene->base.last

Modified: trunk/blender/source/blender/src/meshtools.c
===================================================================
--- trunk/blender/source/blender/src/meshtools.c	2008-04-26 20:41:25 UTC (rev 14557)
+++ trunk/blender/source/blender/src/meshtools.c	2008-04-27 11:37:57 UTC (rev 14558)
@@ -164,7 +164,7 @@
 	/* count & check */
 	base= FIRSTBASE;
 	while(base) {
-		if TESTBASELIB(base) {
+		if TESTBASELIB_BGMODE(base) { /* BGMODE since python can access */
 			if(base->object->type==OB_MESH) {
 				me= base->object->data;
 				totvert+= me->totvert;
@@ -200,7 +200,7 @@
 
 	/* if needed add edges to other meshes */
 	for(base= FIRSTBASE; base; base= base->next) {
-		if TESTBASELIB(base) {
+		if TESTBASELIB_BGMODE(base) {
 			if(base->object->type==OB_MESH) {
 				me= base->object->data;
 				totedge += me->totedge;
@@ -221,7 +221,7 @@
 	
 	base= FIRSTBASE;
 	while(base) {
-		if TESTBASELIB(base) {
+		if TESTBASELIB_BGMODE(base) {
 			if(ob!=base->object && base->object->type==OB_MESH) {
 				me= base->object->data;
 
@@ -288,7 +288,7 @@
 	base= FIRSTBASE;
 	while(base) {
 		nextb= base->next;
-		if TESTBASELIB(base) {
+		if TESTBASELIB_BGMODE(base) {
 			if(base->object->type==OB_MESH) {
 				
 				me= base->object->data;

Modified: trunk/blender/source/creator/creator.c
===================================================================
--- trunk/blender/source/creator/creator.c	2008-04-26 20:41:25 UTC (rev 14557)
+++ trunk/blender/source/creator/creator.c	2008-04-27 11:37:57 UTC (rev 14558)
@@ -263,8 +263,6 @@
 	if(G.main->scene.first==0) {
 		set_scene( add_scene("1") );
 	}
-
-	screenmain();
 }
 
 int main(int argc, char **argv)
@@ -815,6 +813,8 @@
 	if (scr_init==0) {
 		main_init_screen();
 	}
+	
+	screenmain(); /* main display loop */
 
 	return 0;
 } /* end of int main(argc,argv)	*/





More information about the Bf-blender-cvs mailing list