mirror of
https://github.com/reactos/wine.git
synced 2024-11-26 05:00:30 +00:00
winex11.drv: Don't modify state if glXMakeContextCurrent fails.
This commit is contained in:
parent
8818c1d8b6
commit
868974c615
@ -1977,22 +1977,27 @@ BOOL CDECL X11DRV_wglMakeContextCurrentARB(X11DRV_PDEVICE* pDrawDev, X11DRV_PDEV
|
||||
if (NULL == pglXMakeContextCurrent) {
|
||||
ret = FALSE;
|
||||
} else {
|
||||
Wine_GLContext *prev_ctx = NtCurrentTeb()->glContext;
|
||||
Wine_GLContext *ctx = (Wine_GLContext *) hglrc;
|
||||
Drawable d_draw = get_glxdrawable(pDrawDev);
|
||||
Drawable d_read = get_glxdrawable(pReadDev);
|
||||
|
||||
if (prev_ctx) prev_ctx->tid = 0;
|
||||
|
||||
ctx->has_been_current = TRUE;
|
||||
ctx->tid = GetCurrentThreadId();
|
||||
ctx->hdc = pDrawDev->hdc;
|
||||
ctx->read_hdc = pReadDev->hdc;
|
||||
ctx->drawables[0] = d_draw;
|
||||
ctx->drawables[1] = d_read;
|
||||
ctx->refresh_drawables = FALSE;
|
||||
ret = pglXMakeContextCurrent(gdi_display, d_draw, d_read, ctx->ctx);
|
||||
NtCurrentTeb()->glContext = ctx;
|
||||
if (ret)
|
||||
{
|
||||
Wine_GLContext *prev_ctx = NtCurrentTeb()->glContext;
|
||||
if (prev_ctx) prev_ctx->tid = 0;
|
||||
|
||||
ctx->has_been_current = TRUE;
|
||||
ctx->tid = GetCurrentThreadId();
|
||||
ctx->hdc = pDrawDev->hdc;
|
||||
ctx->read_hdc = pReadDev->hdc;
|
||||
ctx->drawables[0] = d_draw;
|
||||
ctx->drawables[1] = d_read;
|
||||
ctx->refresh_drawables = FALSE;
|
||||
NtCurrentTeb()->glContext = ctx;
|
||||
}
|
||||
else
|
||||
SetLastError(ERROR_INVALID_HANDLE);
|
||||
}
|
||||
}
|
||||
wine_tsx11_unlock();
|
||||
|
Loading…
Reference in New Issue
Block a user