[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [36119] trunk/blender/source: report missing engines on file load.
Campbell Barton
ideasman42 at gmail.com
Tue Apr 12 17:55:38 CEST 2011
Revision: 36119
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=36119
Author: campbellbarton
Date: 2011-04-12 15:55:38 +0000 (Tue, 12 Apr 2011)
Log Message:
-----------
report missing engines on file load. (request from Martin).
Modified Paths:
--------------
trunk/blender/source/blender/render/intern/source/pipeline.c
trunk/blender/source/blender/windowmanager/intern/wm_files.c
trunk/blender/source/creator/creator.c
Modified: trunk/blender/source/blender/render/intern/source/pipeline.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/pipeline.c 2011-04-12 15:55:04 UTC (rev 36118)
+++ trunk/blender/source/blender/render/intern/source/pipeline.c 2011-04-12 15:55:38 UTC (rev 36119)
@@ -35,6 +35,7 @@
#include <limits.h>
#include <string.h>
#include <stdlib.h>
+#include <stddef.h>
#include "DNA_group_types.h"
#include "DNA_image_types.h"
@@ -3349,13 +3350,9 @@
static int external_render_3d(Render *re, int do_all)
{
- RenderEngineType *type;
+ RenderEngineType *type= BLI_findstring(&R_engines, re->r.engine, offsetof(RenderEngineType, idname));
RenderEngine engine;
- for(type=R_engines.first; type; type=type->next)
- if(strcmp(type->idname, re->r.engine) == 0)
- break;
-
if(!(type && type->render))
return 0;
if((re->r.scemode & R_PREVIEWBUTS) && !(type->flag & RE_DO_PREVIEW))
Modified: trunk/blender/source/blender/windowmanager/intern/wm_files.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_files.c 2011-04-12 15:55:04 UTC (rev 36118)
+++ trunk/blender/source/blender/windowmanager/intern/wm_files.c 2011-04-12 15:55:38 UTC (rev 36119)
@@ -33,7 +33,7 @@
/* placed up here because of crappy
* winsock stuff.
*/
-#include <stdio.h>
+#include <stddef.h>
#include <string.h>
#include <errno.h>
@@ -96,6 +96,8 @@
#include "ED_view3d.h"
#include "ED_util.h"
+#include "RE_pipeline.h" /* only to report missing engine */
+
#include "GHOST_C-api.h"
#include "GHOST_Path-api.h"
@@ -338,6 +340,17 @@
#endif
CTX_wm_window_set(C, NULL); /* exits queues */
+ /* TODO, make this show in header info window */
+ {
+ Scene *sce;
+ for(sce= G.main->scene.first; sce; sce= sce->id.next) {
+ if(BLI_findstring(&R_engines, sce->r.engine, offsetof(RenderEngineType, idname)) == NULL) {
+ BKE_reportf(reports, RPT_WARNING, "Engine not available: '%s' for scene: %s, an addon may need to be installed or enabled", sce->r.engine, sce->id.name+2);
+ }
+ }
+ }
+
+
// XXX undo_editmode_clear();
BKE_reset_undo();
BKE_write_undo(C, "original"); /* save current state */
Modified: trunk/blender/source/creator/creator.c
===================================================================
--- trunk/blender/source/creator/creator.c 2011-04-12 15:55:04 UTC (rev 36118)
+++ trunk/blender/source/creator/creator.c 2011-04-12 15:55:38 UTC (rev 36119)
@@ -43,6 +43,7 @@
#endif
#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
/* for setuid / getuid */
@@ -583,18 +584,12 @@
{
printf("\nError: no blend loaded. order the arguments so '-E / --engine ' is after a blend is loaded.\n");
}
- else
- {
+ else {
Scene *scene= CTX_data_scene(C);
RenderData *rd = &scene->r;
- RenderEngineType *type = NULL;
- for( type = R_engines.first; type; type = type->next )
- {
- if (!strcmp(argv[1],type->idname))
- {
- BLI_strncpy(rd->engine, type->idname, sizeof(rd->engine));
- }
+ if(BLI_findstring(&R_engines, argv[1], offsetof(RenderEngineType, idname))) {
+ BLI_strncpy(rd->engine, argv[1], sizeof(rd->engine));
}
}
}
More information about the Bf-blender-cvs
mailing list