[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