[Bf-blender-cvs] [d64cd6f7ee6] blender2.8: Move call to drw_state_ensure_not_reused() inside the region locked by DST.gl_context_mutex.

Clément Foucault noreply at git.blender.org
Thu Jun 14 12:03:40 CEST 2018


Commit: d64cd6f7ee6322685c485b68118f8e987723f20b
Author: Clément Foucault
Date:   Thu Jun 14 12:01:18 2018 +0200
Branches: blender2.8
https://developer.blender.org/rBd64cd6f7ee6322685c485b68118f8e987723f20b

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

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

M	release/scripts/addons
M	release/scripts/addons_contrib
M	source/blender/draw/intern/draw_manager.c
M	source/tools

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

diff --git a/release/scripts/addons b/release/scripts/addons
index ebd058d7a64..8f2fd7e23f0 160000
--- a/release/scripts/addons
+++ b/release/scripts/addons
@@ -1 +1 @@
-Subproject commit ebd058d7a6438d137522063bb3286c8acc325ca6
+Subproject commit 8f2fd7e23f0b5ce023440182f51c40e88d663325
diff --git a/release/scripts/addons_contrib b/release/scripts/addons_contrib
index 47470215783..34a27a42d78 160000
--- a/release/scripts/addons_contrib
+++ b/release/scripts/addons_contrib
@@ -1 +1 @@
-Subproject commit 474702157831f1a58bb50f5240ab8b1b02b6ba37
+Subproject commit 34a27a42d781d80f9f1833bad8cc5b2abcac2933
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(
diff --git a/source/tools b/source/tools
index 9d7d338cb25..f35d8e55aff 160000
--- a/source/tools
+++ b/source/tools
@@ -1 +1 @@
-Subproject commit 9d7d338cb25a071f9646cf9ba16f17004c963f77
+Subproject commit f35d8e55afffb9da50cc13b14615ed280f9e558c



More information about the Bf-blender-cvs mailing list