Matteo Bruni : winex11.drv: Don' t modify current state if glXMakeCurrent fails.
Alexandre Julliard
julliard at winehq.org
Wed Mar 30 13:15:37 CDT 2011
Module: wine
Branch: master
Commit: 77679c4e9cde852b366d1039fb30b4e7995b44c5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=77679c4e9cde852b366d1039fb30b4e7995b44c5
Author: Matteo Bruni <mbruni at codeweavers.com>
Date: Thu Mar 3 21:06:33 2011 +0100
winex11.drv: Don't modify current state if glXMakeCurrent fails.
---
dlls/winex11.drv/opengl.c | 9 ++++++---
1 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index b74bc0a..c5796a4 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -1907,7 +1907,6 @@ BOOL CDECL X11DRV_wglMakeCurrent(X11DRV_PDEVICE *physDev, HGLRC hglrc) {
{
Drawable drawable = get_glxdrawable(physDev);
Wine_GLContext *prev_ctx = NtCurrentTeb()->glContext;
- if (prev_ctx) prev_ctx->tid = 0;
/* The describe lines below are for debugging purposes only */
if (TRACE_ON(wgl)) {
@@ -1917,10 +1916,12 @@ BOOL CDECL X11DRV_wglMakeCurrent(X11DRV_PDEVICE *physDev, HGLRC hglrc) {
TRACE(" make current for dis %p, drawable %p, ctx %p\n", gdi_display, (void*) drawable, ctx->ctx);
ret = pglXMakeCurrent(gdi_display, drawable, ctx->ctx);
- NtCurrentTeb()->glContext = ctx;
- if(ret)
+ if (ret)
{
+ if (prev_ctx) prev_ctx->tid = 0;
+ NtCurrentTeb()->glContext = ctx;
+
ctx->has_been_current = TRUE;
ctx->tid = GetCurrentThreadId();
ctx->hdc = hdc;
@@ -1935,6 +1936,8 @@ BOOL CDECL X11DRV_wglMakeCurrent(X11DRV_PDEVICE *physDev, HGLRC hglrc) {
pglDrawBuffer(GL_FRONT_LEFT);
}
}
+ else
+ SetLastError(ERROR_INVALID_HANDLE);
}
wine_tsx11_unlock();
TRACE(" returning %s\n", (ret ? "True" : "False"));
More information about the wine-cvs
mailing list