[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29954] trunk/blender: bugfix [#22724] " Scene" switch on the console doesn't work

Campbell Barton ideasman42 at gmail.com
Mon Jul 5 02:00:40 CEST 2010


Revision: 29954
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29954
Author:   campbellbarton
Date:     2010-07-05 02:00:40 +0200 (Mon, 05 Jul 2010)

Log Message:
-----------
bugfix [#22724] "Scene" switch on the console doesn't work

Modified Paths:
--------------
    trunk/blender/intern/ghost/intern/GHOST_Path-api.cpp
    trunk/blender/source/blender/blenkernel/intern/scene.c
    trunk/blender/source/creator/creator.c

Modified: trunk/blender/intern/ghost/intern/GHOST_Path-api.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_Path-api.cpp	2010-07-04 23:26:55 UTC (rev 29953)
+++ trunk/blender/intern/ghost/intern/GHOST_Path-api.cpp	2010-07-05 00:00:40 UTC (rev 29954)
@@ -34,17 +34,17 @@
 const GHOST_TUns8* GHOST_getSystemDir()
 {
 	GHOST_ISystem* system = GHOST_ISystem::getSystem();
-	return system->getSystemDir();
+	return system ? system->getSystemDir() : NULL;
 }
 
 const GHOST_TUns8* GHOST_getUserDir()
 {
 	GHOST_ISystem* system = GHOST_ISystem::getSystem();
-	return system->getUserDir();
+	return system ? system->getUserDir() : NULL; /* will be NULL in background mode */
 }
 
 const GHOST_TUns8* GHOST_getBinaryDir()
 {
 	GHOST_ISystem* system = GHOST_ISystem::getSystem();
-	return system->getBinaryDir();
+	return system ? system->getBinaryDir() : NULL; /* will be NULL in background mode */
 }

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2010-07-04 23:26:55 UTC (rev 29953)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2010-07-05 00:00:40 UTC (rev 29954)
@@ -553,18 +553,17 @@
 }
 
 /* called from creator.c */
-void set_scene_name(char *name)
+Scene *set_scene_name(char *name)
 {
-	Scene *sce;
-
-	for (sce= G.main->scene.first; sce; sce= sce->id.next) {
-		if (BLI_streq(name, sce->id.name+2)) {
-			set_scene_bg(sce);
-			return;
-		}
+	Scene *sce= (Scene *)find_id("SC", name);
+	if(sce) {
+		set_scene_bg(sce);
+		printf("Scene switch: '%s' in file: '%s'\n", name, G.sce);
+		return sce;
 	}
-	
-	//XXX error("Can't find scene: %s", name);
+
+	printf("Can't find scene: '%s' in file: '%s'\n", name, G.sce);
+	return NULL;
 }
 
 void unlink_scene(Main *bmain, Scene *sce, Scene *newsce)

Modified: trunk/blender/source/creator/creator.c
===================================================================
--- trunk/blender/source/creator/creator.c	2010-07-04 23:26:55 UTC (rev 29953)
+++ trunk/blender/source/creator/creator.c	2010-07-05 00:00:40 UTC (rev 29954)
@@ -737,7 +737,11 @@
 static int set_scene(int argc, char **argv, void *data)
 {
 	if(argc > 1) {
-		set_scene_name(argv[1]);
+		bContext *C= data;
+		Scene *sce= set_scene_name(argv[1]);
+		if(sce) {
+			CTX_data_scene_set(C, sce);
+		}
 		return 1;
 	} else {
 		printf("\nError: Scene name must follow '-S / --scene'.\n");
@@ -982,7 +986,7 @@
 	BLI_argsAdd(ba, 4, "-g", NULL, game_doc, set_ge_parameters, syshandle);
 	BLI_argsAdd(ba, 4, "-f", "--render-frame", "<frame>\n\tRender frame <frame> and save it.\n\t+<frame> start frame relative, -<frame> end frame relative.", render_frame, C);
 	BLI_argsAdd(ba, 4, "-a", "--render-anim", "\n\tRender frames from start to end (inclusive)", render_animation, C);
-	BLI_argsAdd(ba, 4, "-S", "--scene", "<name>\n\tSet the active scene <name> for rendering", set_scene, NULL);
+	BLI_argsAdd(ba, 4, "-S", "--scene", "<name>\n\tSet the active scene <name> for rendering", set_scene, C);
 	BLI_argsAdd(ba, 4, "-s", "--frame-start", "<frame>\n\tSet start to frame <frame> (use before the -a argument)", set_start_frame, C);
 	BLI_argsAdd(ba, 4, "-e", "--frame-end", "<frame>\n\tSet end to frame <frame> (use before the -a argument)", set_end_frame, C);
 	BLI_argsAdd(ba, 4, "-j", "--frame-jump", "<frames>\n\tSet number of frames to step forward after each rendered frame", set_skip_frame, C);





More information about the Bf-blender-cvs mailing list