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