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:
authorClément Foucault <foucault.clem@gmail.com>2018-06-14 13:01:18 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-06-14 13:03:40 +0300
commitd64cd6f7ee6322685c485b68118f8e987723f20b (patch)
tree9994f34a680eb7defc54200e942e4c7b4d733b63 /source/blender/draw
parent17b029d80efaf51df55cd1133718d1cf69aa244f (diff)
Move call to drw_state_ensure_not_reused() inside the region locked by DST.gl_context_mutex.
Currently with a debug build there is a race condition where the mutex is released before the DST structure is reset to 0xFF, meaning when multiple threads are using the DRWManager it can get cleared when the main thread is using it, causing crashes. Reviewers: fclem, brecht Reviewed By: fclem Tags: #bf_blender_2.8 Differential Revision: https://developer.blender.org/D3476
Diffstat (limited to 'source/blender/draw')
-rw-r--r--source/blender/draw/intern/draw_manager.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 4991f325e13..a91b9fad35e 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1548,6 +1548,11 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph)
GPU_viewport_free(DST.viewport);
GPU_framebuffer_restore();
+#ifdef DEBUG
+ /* Avoid accidental reuse. */
+ drw_state_ensure_not_reused(&DST);
+#endif
+
/* Changing Context */
if (re_gl_context != NULL) {
DRW_shape_cache_reset(); /* XXX fix that too. */
@@ -1560,11 +1565,6 @@ void DRW_render_to_image(RenderEngine *engine, struct Depsgraph *depsgraph)
else {
DRW_opengl_context_disable();
}
-
-#ifdef DEBUG
- /* Avoid accidental reuse. */
- drw_state_ensure_not_reused(&DST);
-#endif
}
void DRW_render_object_iter(