[Bf-blender-cvs] [437210d379b] workspaces: Fix crash when renaming workspace render layer
Julian Eisel
noreply at git.blender.org
Sat May 13 21:27:11 CEST 2017
Commit: 437210d379b6a2c37d3ecdf27b3aed2b8a259ede
Author: Julian Eisel
Date: Sat May 13 21:24:02 2017 +0200
Branches: workspaces
https://developer.blender.org/rB437210d379b6a2c37d3ecdf27b3aed2b8a259ede
Fix crash when renaming workspace render layer
PointerRNA.id.data needs to point to the Scene for render-layers. Have
to do lookup in getter here, so we find the scene that contains a render
layer... which is a bit ugly :/
===================================================================
M source/blender/makesrna/intern/rna_workspace.c
===================================================================
diff --git a/source/blender/makesrna/intern/rna_workspace.c b/source/blender/makesrna/intern/rna_workspace.c
index e817f09ff16..29fe5bae0e4 100644
--- a/source/blender/makesrna/intern/rna_workspace.c
+++ b/source/blender/makesrna/intern/rna_workspace.c
@@ -36,9 +36,15 @@
#ifdef RNA_RUNTIME
+#include "BKE_global.h"
+
+#include "BLI_listbase.h"
+
#include "DNA_object_types.h"
#include "DNA_screen_types.h"
+#include "RNA_access.h"
+
void rna_workspace_screens_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
@@ -73,7 +79,19 @@ static void rna_workspace_object_mode_set(PointerRNA *ptr, int value)
static PointerRNA rna_workspace_render_layer_get(PointerRNA *ptr)
{
WorkSpace *workspace = ptr->data;
- return rna_pointer_inherit_refine(ptr, &RNA_SceneLayer, BKE_workspace_render_layer_get(workspace));
+ SceneLayer *render_layer = BKE_workspace_render_layer_get(workspace);
+
+ /* XXX hmrf... lookup in getter... but how could we avoid it? */
+ for (Scene *scene = G.main->scene.first; scene; scene = scene->id.next) {
+ if (BLI_findindex(&scene->render_layers, render_layer) != -1) {
+ PointerRNA scene_ptr;
+
+ RNA_id_pointer_create(&scene->id, &scene_ptr);
+ return rna_pointer_inherit_refine(&scene_ptr, &RNA_SceneLayer, render_layer);
+ }
+ }
+
+ return PointerRNA_NULL;
}
static void rna_workspace_render_layer_set(PointerRNA *ptr, PointerRNA value)
More information about the Bf-blender-cvs
mailing list