Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2019-07-30 14:40:42 +0300
committerCampbell Barton <ideasman42@gmail.com>2019-07-30 14:43:40 +0300
commitb9718299ea509df2a3d563f0ac2639f01cad39ab (patch)
treec041eb7cb7633f461cf07c164690875229e5c2b7 /source/blender/draw
parent51be0a765e44512dbc2b89ff9c3f8b225f7b7565 (diff)
Fix crash clicking in the 3D view on startup
Setting the 3D view cursor on startup could crash because the viewport hasn't been assigned to the region.
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/DRW_engine.h3
-rw-r--r--source/blender/draw/intern/draw_manager.c11
2 files changed, 10 insertions, 4 deletions
diff --git a/source/blender/draw/DRW_engine.h b/source/blender/draw/DRW_engine.h
index 64a02f3931b..e31200ae82f 100644
--- a/source/blender/draw/DRW_engine.h
+++ b/source/blender/draw/DRW_engine.h
@@ -129,7 +129,8 @@ void DRW_draw_select_loop(struct Depsgraph *depsgraph,
void DRW_draw_depth_loop(struct Depsgraph *depsgraph,
struct ARegion *ar,
struct View3D *v3d,
- struct GPUViewport *viewport);
+ struct GPUViewport *viewport,
+ bool use_opengl_context);
void DRW_draw_depth_loop_gpencil(struct Depsgraph *depsgraph,
struct ARegion *ar,
struct View3D *v3d,
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 320a6f6aaaa..af61063335b 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -2452,14 +2452,17 @@ static void drw_draw_depth_loop_imp(void)
void DRW_draw_depth_loop(struct Depsgraph *depsgraph,
ARegion *ar,
View3D *v3d,
- GPUViewport *viewport)
+ GPUViewport *viewport,
+ bool use_opengl_context)
{
Scene *scene = DEG_get_evaluated_scene(depsgraph);
RenderEngineType *engine_type = ED_view3d_engine_type(scene, v3d->shading.type);
ViewLayer *view_layer = DEG_get_evaluated_view_layer(depsgraph);
RegionView3D *rv3d = ar->regiondata;
- DRW_opengl_context_enable();
+ if (use_opengl_context) {
+ DRW_opengl_context_enable();
+ }
/* Reset before using it. */
drw_state_prepare_clean_for_draw(&DST);
@@ -2498,7 +2501,9 @@ void DRW_draw_depth_loop(struct Depsgraph *depsgraph,
#endif
/* Changin context */
- DRW_opengl_context_disable();
+ if (use_opengl_context) {
+ DRW_opengl_context_disable();
+ }
}
/**