From 900094cbfe8d803bed3c5378a3ac783cdce16dbc Mon Sep 17 00:00:00 2001 From: Roderick Colenbrander Date: Tue, 5 Dec 2006 23:12:24 +0100 Subject: [PATCH] wgl: Cleanup wglMakeCurrent. --- dlls/winex11.drv/opengl.c | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c index 5779bceee04..3eb98b90404 100644 --- a/dlls/winex11.drv/opengl.c +++ b/dlls/winex11.drv/opengl.c @@ -1464,28 +1464,17 @@ BOOL X11DRV_wglMakeCurrent(X11DRV_PDEVICE *physDev, HGLRC hglrc) { Wine_GLContext *ctx = (Wine_GLContext *) hglrc; Drawable drawable = physDev->drawable; if (ctx->ctx == NULL) { - int draw_vis_id, ctx_vis_id; - VisualID visualid = (VisualID)GetPropA( GetDesktopWindow(), "__wine_x11_visual_id" ); - TRACE(" Wine desktop VISUAL_ID is 0x%x\n", (unsigned int) visualid); - draw_vis_id = describeDrawable(ctx, drawable); - ctx_vis_id = describeContext(ctx); - - if (-1 == draw_vis_id || (draw_vis_id == visualid && draw_vis_id != ctx_vis_id)) { - /** - * Inherits from root window so reuse desktop visual - */ - XVisualInfo template; - XVisualInfo *vis; - int num; - template.visualid = visualid; - vis = XGetVisualInfo(ctx->display, VisualIDMask, &template, &num); - - TRACE(" Creating GLX Context\n"); - ctx->ctx = pglXCreateContext(ctx->display, vis, NULL, type == OBJ_MEMDC ? False : True); - } else { - TRACE(" Creating GLX Context\n"); - ctx->ctx = pglXCreateContext(ctx->display, ctx->vis, NULL, type == OBJ_MEMDC ? False : True); + /* The describe lines below are for debugging purposes only */ + if (TRACE_ON(wgl)) { + describeDrawable(ctx, drawable); + describeContext(ctx); } + + /* Create a GLX context using the same visual as chosen earlier in wglCreateContext. + * We are certain that the drawable and context are compatible as we only allow compatible formats. + */ + TRACE(" Creating GLX Context\n"); + ctx->ctx = pglXCreateContext(ctx->display, ctx->vis, NULL, type == OBJ_MEMDC ? False : True); TRACE(" created a delayed OpenGL context (%p)\n", ctx->ctx); } TRACE(" make current for dis %p, drawable %p, ctx %p\n", ctx->display, (void*) drawable, ctx->ctx);