[Bf-blender-cvs] [2fa231a86b4] blender2.8: Ghost: Fix F12 render on windows.
Ray Molenkamp
noreply at git.blender.org
Sat Jun 23 19:37:48 CEST 2018
Commit: 2fa231a86b4179ed513da2469df877497b346162
Author: Ray Molenkamp
Date: Sat Jun 23 11:37:35 2018 -0600
Branches: blender2.8
https://developer.blender.org/rB2fa231a86b4179ed513da2469df877497b346162
Ghost: Fix F12 render on windows.
createOffscreenContext left the new context bound to the calling thread
causing a race condition with the background thread doing the actual
rendering. see T55555 for a more detailed description of the problem.
this patch changes the behavior of createOffscreenContext to restore the
context to the calling context.
Reviewers: fclem
Differential Revision: https://developer.blender.org/D3499
===================================================================
M intern/ghost/intern/GHOST_SystemWin32.cpp
===================================================================
diff --git a/intern/ghost/intern/GHOST_SystemWin32.cpp b/intern/ghost/intern/GHOST_SystemWin32.cpp
index b97bf1d089c..17c41e96be4 100644
--- a/intern/ghost/intern/GHOST_SystemWin32.cpp
+++ b/intern/ghost/intern/GHOST_SystemWin32.cpp
@@ -325,7 +325,8 @@ GHOST_IContext *GHOST_SystemWin32::createOffscreenContext()
);
HDC mHDC = GetDC(wnd);
-
+ HDC prev_hdc = wglGetCurrentDC();
+ HGLRC prev_context = wglGetCurrentContext();
#if defined(WITH_GL_PROFILE_CORE)
for (int minor = 5; minor >= 0; --minor) {
context = new GHOST_ContextWGL(
@@ -337,7 +338,7 @@ GHOST_IContext *GHOST_SystemWin32::createOffscreenContext()
GHOST_OPENGL_WGL_RESET_NOTIFICATION_STRATEGY);
if (context->initializeDrawingContext()) {
- return context;
+ goto finished;
}
else {
delete context;
@@ -353,7 +354,7 @@ GHOST_IContext *GHOST_SystemWin32::createOffscreenContext()
GHOST_OPENGL_WGL_RESET_NOTIFICATION_STRATEGY);
if (context->initializeDrawingContext()) {
- return context;
+ goto finished;
}
else {
MessageBox(
@@ -386,8 +387,9 @@ GHOST_IContext *GHOST_SystemWin32::createOffscreenContext()
#else
# error // must specify either core or compat at build time
#endif
-
- return NULL;
+finished:
+ wglMakeCurrent(prev_hdc, prev_context);
+ return context;
}
/**
More information about the Bf-blender-cvs
mailing list