Module: wine Branch: master Commit: cf92569cdd292fd8780bfafb7dafa01280aa9a26 URL: http://source.winehq.org/git/wine.git/?a=commit;h=cf92569cdd292fd8780bfafb7d...
Author: Matteo Bruni mbruni@codeweavers.com Date: Fri Jan 16 19:38:54 2015 +0100
opengl32: Store the OpenGL context version in the handle value.
---
dlls/opengl32/wgl.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c index 3a5e148..32d241c 100644 --- a/dlls/opengl32/wgl.c +++ b/dlls/opengl32/wgl.c @@ -51,8 +51,9 @@ extern struct opengl_funcs null_opengl_funcs;
enum wgl_handle_type { - HANDLE_CONTEXT = 0 << 12, - HANDLE_PBUFFER = 1 << 12, + HANDLE_PBUFFER = 0 << 12, + HANDLE_CONTEXT = 1 << 12, + HANDLE_CONTEXT_V3 = 3 << 12, HANDLE_TYPE_MASK = 15 << 12 };
@@ -270,8 +271,24 @@ HGLRC WINAPI wglCreateContextAttribsARB( HDC hdc, HGLRC share, const int *attrib { if ((context = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*context) ))) { + enum wgl_handle_type type = HANDLE_CONTEXT; + + if (attribs) + { + while (*attribs) + { + if (attribs[0] == WGL_CONTEXT_MAJOR_VERSION_ARB) + { + if (attribs[1] >= 3) + type = HANDLE_CONTEXT_V3; + break; + } + attribs += 2; + } + } + context->drv_ctx = drv_ctx; - if (!(ret = alloc_handle( HANDLE_CONTEXT, funcs, context ))) + if (!(ret = alloc_handle( type, funcs, context ))) HeapFree( GetProcessHeap(), 0, context ); } if (!ret) funcs->wgl.p_wglDeleteContext( drv_ctx );