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)

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to