[Bf-blender-cvs] [d21a8dcae29] master: Overlay Engine: Fix crash in select mode with Lock Object Modes off

Clément Foucault noreply at git.blender.org
Thu Dec 5 13:01:06 CET 2019


Commit: d21a8dcae295154c71b8c5c6d480d877af5c0b2a
Author: Clément Foucault
Date:   Thu Dec 5 13:31:53 2019 +0100
Branches: master
https://developer.blender.org/rBd21a8dcae295154c71b8c5c6d480d877af5c0b2a

Overlay Engine: Fix crash in select mode with  Lock Object Modes off

Fixes T72189: Crash when Lock Object Modes off and switching from Sculpt mode to Object mode

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

M	source/blender/draw/engines/overlay/overlay_edit_curve.c
M	source/blender/draw/engines/overlay/overlay_edit_text.c
M	source/blender/draw/engines/overlay/overlay_lattice.c
M	source/blender/draw/engines/overlay/overlay_particle.c
M	source/blender/draw/engines/overlay/overlay_sculpt.c

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

diff --git a/source/blender/draw/engines/overlay/overlay_edit_curve.c b/source/blender/draw/engines/overlay/overlay_edit_curve.c
index e4b0c1bcecb..b39dc39fd47 100644
--- a/source/blender/draw/engines/overlay/overlay_edit_curve.c
+++ b/source/blender/draw/engines/overlay/overlay_edit_curve.c
@@ -121,7 +121,9 @@ void OVERLAY_edit_curve_draw(OVERLAY_Data *vedata)
   OVERLAY_PassList *psl = vedata->psl;
   OVERLAY_FramebufferList *fbl = vedata->fbl;
 
-  GPU_framebuffer_bind(fbl->overlay_default_fb);
+  if (DRW_state_is_fbo()) {
+    GPU_framebuffer_bind(fbl->overlay_default_fb);
+  }
 
   DRW_draw_pass(psl->edit_curve_wire_ps[0]);
   DRW_draw_pass(psl->edit_curve_wire_ps[1]);
diff --git a/source/blender/draw/engines/overlay/overlay_edit_text.c b/source/blender/draw/engines/overlay/overlay_edit_text.c
index b4e439b2c41..0975608a300 100644
--- a/source/blender/draw/engines/overlay/overlay_edit_text.c
+++ b/source/blender/draw/engines/overlay/overlay_edit_text.c
@@ -193,8 +193,10 @@ void OVERLAY_edit_text_draw(OVERLAY_Data *vedata)
   OVERLAY_PassList *psl = vedata->psl;
   DefaultFramebufferList *dfbl = DRW_viewport_framebuffer_list_get();
 
-  /* Text overlay need final color for color inversion. */
-  GPU_framebuffer_bind(dfbl->default_fb);
+  if (DRW_state_is_fbo()) {
+    /* Text overlay need final color for color inversion. */
+    GPU_framebuffer_bind(dfbl->default_fb);
+  }
 
   DRW_draw_pass(psl->edit_text_wire_ps[0]);
   DRW_draw_pass(psl->edit_text_wire_ps[1]);
diff --git a/source/blender/draw/engines/overlay/overlay_lattice.c b/source/blender/draw/engines/overlay/overlay_lattice.c
index 3ccf85b71dc..84d9dcc3e94 100644
--- a/source/blender/draw/engines/overlay/overlay_lattice.c
+++ b/source/blender/draw/engines/overlay/overlay_lattice.c
@@ -75,7 +75,9 @@ void OVERLAY_edit_lattice_draw(OVERLAY_Data *vedata)
   OVERLAY_PassList *psl = vedata->psl;
   OVERLAY_FramebufferList *fbl = vedata->fbl;
 
-  GPU_framebuffer_bind(fbl->overlay_default_fb);
+  if (DRW_state_is_fbo()) {
+    GPU_framebuffer_bind(fbl->overlay_default_fb);
+  }
 
   DRW_draw_pass(psl->edit_lattice_ps);
 }
diff --git a/source/blender/draw/engines/overlay/overlay_particle.c b/source/blender/draw/engines/overlay/overlay_particle.c
index 2983573acb7..3540de35e46 100644
--- a/source/blender/draw/engines/overlay/overlay_particle.c
+++ b/source/blender/draw/engines/overlay/overlay_particle.c
@@ -122,7 +122,9 @@ void OVERLAY_edit_particle_draw(OVERLAY_Data *vedata)
   OVERLAY_PassList *psl = vedata->psl;
   OVERLAY_FramebufferList *fbl = vedata->fbl;
 
-  GPU_framebuffer_bind(fbl->overlay_default_fb);
+  if (DRW_state_is_fbo()) {
+    GPU_framebuffer_bind(fbl->overlay_default_fb);
+  }
 
   DRW_draw_pass(psl->edit_particle_ps);
 }
diff --git a/source/blender/draw/engines/overlay/overlay_sculpt.c b/source/blender/draw/engines/overlay/overlay_sculpt.c
index ab3f87e9736..dc286d36e9e 100644
--- a/source/blender/draw/engines/overlay/overlay_sculpt.c
+++ b/source/blender/draw/engines/overlay/overlay_sculpt.c
@@ -62,7 +62,9 @@ void OVERLAY_sculpt_draw(OVERLAY_Data *vedata)
   OVERLAY_PassList *psl = vedata->psl;
   OVERLAY_FramebufferList *fbl = vedata->fbl;
 
-  GPU_framebuffer_bind(fbl->overlay_default_fb);
+  if (DRW_state_is_fbo()) {
+    GPU_framebuffer_bind(fbl->overlay_default_fb);
+  }
 
   DRW_draw_pass(psl->sculpt_mask_ps);
 }



More information about the Bf-blender-cvs mailing list