[Bf-blender-cvs] [3021399] viewport_experiments: Ensure View3D fx when using them, prevents some crashes with old files

Antony Riakiotakis noreply at git.blender.org
Sat Nov 15 00:03:22 CET 2014


Commit: 302139986920028e90ed9fee7fc5727b16c30e91
Author: Antony Riakiotakis
Date:   Fri Nov 14 23:52:41 2014 +0100
Branches: viewport_experiments
https://developer.blender.org/rB302139986920028e90ed9fee7fc5727b16c30e91

Ensure View3D fx when using them, prevents some crashes with old files

===================================================================

M	source/blender/blenkernel/BKE_screen.h
M	source/blender/blenkernel/intern/screen.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/makesrna/intern/rna_space.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_screen.h b/source/blender/blenkernel/BKE_screen.h
index 188b8e2..8ae386c 100644
--- a/source/blender/blenkernel/BKE_screen.h
+++ b/source/blender/blenkernel/BKE_screen.h
@@ -292,6 +292,7 @@ void BKE_screen_view3d_scene_sync(struct bScreen *sc);
 void BKE_screen_view3d_main_sync(ListBase *screen_lb, struct Scene *scene);
 void BKE_screen_view3d_twmode_remove(struct View3D *v3d, const int i);
 void BKE_screen_view3d_main_twmode_remove(ListBase *screen_lb, struct Scene *scene, const int i);
+void BKE_screen_view3d_ensure_FX(struct View3D *v3d);
 
 /* zoom factor conversion */
 float BKE_screen_view3d_zoom_to_fac(float camzoom);
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index b229615..7554d37 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -563,3 +563,11 @@ float BKE_screen_view3d_zoom_from_fac(float zoomfac)
 {
 	return ((sqrtf(4.0f * zoomfac) - (float)M_SQRT2) * 50.0f);
 }
+
+void BKE_screen_view3d_ensure_FX(View3D *v3d) {
+	if (!v3d->fxoptions) {
+		v3d->fxoptions = MEM_callocN(sizeof(GPUFXOptions), "view3d fx options");
+		v3d->fxoptions->dof_options = MEM_callocN(sizeof(GPUDOFOptions), "view3d dof options");
+		v3d->fxoptions->ssao_options = MEM_callocN(sizeof(GPUSSAOOptions), "view3d ssao options");
+	}
+}
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index a03e9f0..e50b17a 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -3446,7 +3446,9 @@ static void view3d_main_area_draw_objects(const bContext *C, Scene *scene, View3
 
 	/* framebuffer fx needed, we need to draw offscreen first */
 	if (v3d->shader_fx) {
-		GPUFXOptions options = *v3d->fxoptions;
+		GPUFXOptions options;
+		BKE_screen_view3d_ensure_FX(v3d);
+		options = *v3d->fxoptions;
 		if (!rv3d->compositor)
 			rv3d->compositor = GPU_create_fx_compositor();
 		
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index edf4a2c..0114db6 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -34,6 +34,7 @@
 #include "BKE_key.h"
 #include "BKE_movieclip.h"
 #include "BKE_node.h"
+#include "BKE_screen.h"
 
 #include "DNA_action_types.h"
 #include "DNA_key_types.h"
@@ -503,17 +504,7 @@ static void rna_SpaceView3D_fx_update(Main *UNUSED(bmain), Scene *UNUSED(scene),
 {
 	View3D *v3d = (View3D *)(ptr->data);
 
-	if (!v3d->fxoptions) {
-		v3d->fxoptions = MEM_callocN(sizeof(GPUFXOptions), "view3d fx options");
-	}
-
-	if (!v3d->fxoptions->dof_options) {
-		v3d->fxoptions->dof_options = MEM_callocN(sizeof(GPUDOFOptions), "view3d dof options");
-	}
-
-	if (!v3d->fxoptions->ssao_options) {
-		v3d->fxoptions->ssao_options = MEM_callocN(sizeof(GPUSSAOOptions), "view3d ssao options");
-	}
+	BKE_screen_view3d_ensure_FX(v3d);
 }
 
 static void rna_SpaceView3D_pivot_update(Main *bmain, Scene *UNUSED(scene), PointerRNA *ptr)




More information about the Bf-blender-cvs mailing list