[Bf-blender-cvs] [8d8f7e52c1d] blender2.8: Make sure that the WM_opengl_context_create is always called on the main thread

Germano noreply at git.blender.org
Thu Mar 8 00:06:02 CET 2018


Commit: 8d8f7e52c1dbf7e7c56eb212ff9e934131fdaf83
Author: Germano
Date:   Wed Mar 7 20:05:51 2018 -0300
Branches: blender2.8
https://developer.blender.org/rB8d8f7e52c1dbf7e7c56eb212ff9e934131fdaf83

Make sure that the WM_opengl_context_create is always called on the main thread

Avoid the error 170 ("The requested resource is in use").

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

M	source/blender/draw/intern/draw_manager.c
M	source/blender/draw/intern/draw_manager_shader.c
M	source/blender/windowmanager/intern/wm_window.c

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

diff --git a/source/blender/draw/intern/draw_manager.c b/source/blender/draw/intern/draw_manager.c
index 155547f1224..53dfa429abf 100644
--- a/source/blender/draw/intern/draw_manager.c
+++ b/source/blender/draw/intern/draw_manager.c
@@ -1952,7 +1952,6 @@ void DRW_engines_free(void)
 void DRW_opengl_context_create(void)
 {
 	BLI_assert(DST.ogl_context == NULL); /* Ensure it's called once */
-	BLI_assert(BLI_thread_is_main());
 
 	BLI_mutex_init(&DST.ogl_context_mutex);
 
diff --git a/source/blender/draw/intern/draw_manager_shader.c b/source/blender/draw/intern/draw_manager_shader.c
index c898021ebd7..69c13bb61c2 100644
--- a/source/blender/draw/intern/draw_manager_shader.c
+++ b/source/blender/draw/intern/draw_manager_shader.c
@@ -200,7 +200,6 @@ static void drw_deferred_shader_add(
 	BLI_addtail(&comp->queue, dsh);
 
 	/* Create one context per task. */
-	BLI_assert(BLI_thread_is_main());
 	comp->ogl_context = WM_opengl_context_create();
 	WM_opengl_context_activate(DST.ogl_context);
 
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 7fef86c006e..ecd91ff2d1a 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -2075,6 +2075,11 @@ void wm_window_IME_end(wmWindow *win)
 
 void *WM_opengl_context_create(void)
 {
+	/* On Windows there is a problem creating contexts that share lists
+	 * from one context that is current in another thread.
+	 * So we should call this function only on the main thread.
+	 */
+	BLI_assert(BLI_thread_is_main());
 	return GHOST_CreateOpenGLContext(g_system);
 }



More information about the Bf-blender-cvs mailing list