Roderick Colenbrander : wgl: Move wglGetCurrentDC to gdi32.
Alexandre Julliard
julliard at wine.codeweavers.com
Mon Oct 16 05:28:56 CDT 2006
Module: wine
Branch: master
Commit: 8c32dd77a3c50b6030e85bb92b47312f0cabb1ec
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8c32dd77a3c50b6030e85bb92b47312f0cabb1ec
Author: Roderick Colenbrander <thunderbird2k at gmx.net>
Date: Sat Oct 14 22:11:33 2006 +0200
wgl: Move wglGetCurrentDC to gdi32.
---
dlls/gdi/gdi32.spec | 1 +
dlls/gdi/opengl.c | 21 +++++++++++++++++++++
dlls/opengl32/opengl32.spec | 2 +-
dlls/opengl32/wgl.c | 10 ----------
dlls/winex11.drv/opengl.c | 29 +----------------------------
dlls/winex11.drv/winex11.drv.spec | 1 -
6 files changed, 24 insertions(+), 40 deletions(-)
diff --git a/dlls/gdi/gdi32.spec b/dlls/gdi/gdi32.spec
index 75b5496..e494c72 100644
--- a/dlls/gdi/gdi32.spec
+++ b/dlls/gdi/gdi32.spec
@@ -500,6 +500,7 @@ # Wine extensions: OpenGL support
#
@ stdcall wglCreateContext(long)
@ stdcall wglGetCurrentContext()
+@ stdcall wglGetCurrentDC()
@ stdcall wglMakeCurrent(long long)
@ stdcall wglUseFontBitmapsA(long long long long)
@ stdcall wglUseFontBitmapsW(long long long long)
diff --git a/dlls/gdi/opengl.c b/dlls/gdi/opengl.c
index 5203e46..95e09c6 100644
--- a/dlls/gdi/opengl.c
+++ b/dlls/gdi/opengl.c
@@ -41,6 +41,11 @@ WINE_DEFAULT_DEBUG_CHANNEL(wgl);
static HDC default_hdc = 0;
+typedef struct opengl_context
+{
+ HDC hdc;
+} *OPENGL_Context;
+
/* We route all wgl functions from opengl32.dll through gdi32.dll to
* the display driver. Various wgl calls have a hDC as one of their parameters.
* Using DC_GetDCPtr we get access to the functions exported by the driver.
@@ -85,6 +90,22 @@ HGLRC WINAPI wglGetCurrentContext(void)
}
/***********************************************************************
+ * wglGetCurrentDC (OPENGL32.@)
+ */
+HDC WINAPI wglGetCurrentDC(void)
+{
+ OPENGL_Context ctx = (OPENGL_Context)wglGetCurrentContext();
+
+ TRACE(" found context: %p\n", ctx);
+ if(ctx == NULL)
+ return NULL;
+
+ /* Retrieve the current DC from the active context */
+ TRACE(" returning hdc: %p\n", ctx->hdc);
+ return ctx->hdc;
+}
+
+/***********************************************************************
* wglMakeCurrent (OPENGL32.@)
*/
BOOL WINAPI wglMakeCurrent(HDC hdc, HGLRC hglrc)
diff --git a/dlls/opengl32/opengl32.spec b/dlls/opengl32/opengl32.spec
index 180beb1..611234c 100644
--- a/dlls/opengl32/opengl32.spec
+++ b/dlls/opengl32/opengl32.spec
@@ -382,7 +382,7 @@
@ stdcall wglDescribeLayerPlane(long long long long ptr)
@ stdcall wglDescribePixelFormat(long long long ptr) gdi32.DescribePixelFormat
@ stdcall wglGetCurrentContext() gdi32.wglGetCurrentContext
-@ stdcall wglGetCurrentDC()
+@ stdcall wglGetCurrentDC() gdi32.wglGetCurrentDC
@ stub wglGetDefaultProcAddress
@ stdcall wglGetLayerPaletteEntries(long long long long ptr)
@ stdcall wglGetPixelFormat(long) gdi32.GetPixelFormat
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
index 52e5a55..6d38721 100644
--- a/dlls/opengl32/wgl.c
+++ b/dlls/opengl32/wgl.c
@@ -48,7 +48,6 @@ WINE_DECLARE_DEBUG_CHANNEL(opengl);
typedef struct wine_wgl_s {
BOOL WINAPI (*p_wglDeleteContext)(HGLRC hglrc);
- HDC WINAPI (*p_wglGetCurrentDC)(void);
PROC WINAPI (*p_wglGetProcAddress)(LPCSTR lpszProc);
BOOL WINAPI (*p_wglShareLists)(HGLRC hglrc1, HGLRC hglrc2);
@@ -172,14 +171,6 @@ BOOL WINAPI wglDescribeLayerPlane(HDC hd
}
/***********************************************************************
- * wglGetCurrentDC (OPENGL32.@)
- */
-HDC WINAPI wglGetCurrentDC(void) {
- TRACE("\n");
- return wine_wgl.p_wglGetCurrentDC();
-}
-
-/***********************************************************************
* wglGetLayerPaletteEntries (OPENGL32.@)
*/
int WINAPI wglGetLayerPaletteEntries(HDC hdc,
@@ -641,7 +632,6 @@ static BOOL process_attach(void)
/* Load WGL function pointers from winex11.drv */
wine_wgl.p_wglDeleteContext = (void *)GetProcAddress(mod, "wglDeleteContext");
- wine_wgl.p_wglGetCurrentDC = (void *)GetProcAddress(mod, "wglGetCurrentDC");
wine_wgl.p_wglGetProcAddress = (void *)GetProcAddress(mod, "wglGetProcAddress");
wine_wgl.p_wglShareLists = (void *)GetProcAddress(mod, "wglShareLists");
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index a81816f..bdd08c4 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -1272,27 +1272,6 @@ BOOL WINAPI X11DRV_wglDeleteContext(HGLR
return ret;
}
-/* OpenGL32 wglGetCurrentDC */
-HDC WINAPI X11DRV_wglGetCurrentDC(void) {
- GLXContext gl_ctx;
- Wine_GLContext *ret;
-
- TRACE("()\n");
-
- wine_tsx11_lock();
- gl_ctx = pglXGetCurrentContext();
- ret = get_context_from_GLXContext(gl_ctx);
- wine_tsx11_unlock();
-
- if (ret) {
- TRACE(" returning %p (GL context %p - Wine context %p)\n", ret->hdc, gl_ctx, ret);
- return ret->hdc;
- } else {
- TRACE(" no Wine context found for GLX context %p\n", gl_ctx);
- return 0;
- }
-}
-
/* OpenGL32 wglGetCurrentReadDCARB */
static HDC WINAPI X11DRV_wglGetCurrentReadDCARB(void)
{
@@ -2353,7 +2332,7 @@ static GLboolean WINAPI X11DRV_wglBindTe
object->render_ctx = wglCreateContext(object->render_hdc);
do_init = 1;
}
- object->prev_hdc = X11DRV_wglGetCurrentDC();
+ object->prev_hdc = wglGetCurrentDC();
object->prev_ctx = wglGetCurrentContext();
/* FIXME: This is routed through gdi32.dll to winex11.drv, replace this with GLX calls */
wglMakeCurrent(object->render_hdc, object->render_ctx);
@@ -2784,12 +2763,6 @@ BOOL WINAPI X11DRV_wglDeleteContext(HGLR
return FALSE;
}
-/* OpenGL32 wglGetCurrentDC */
-HDC WINAPI X11DRV_wglGetCurrentDC(void) {
- ERR_(opengl)("No OpenGL support compiled in.\n");
- return 0;
-}
-
/* OpenGL32: wglGetProcAddress */
PROC X11DRV_wglGetProcAddress(LPCSTR lpszProc) {
ERR_(opengl)("No OpenGL support compiled in.\n");
diff --git a/dlls/winex11.drv/winex11.drv.spec b/dlls/winex11.drv/winex11.drv.spec
index 4cfc0f9..9b3b0a5 100644
--- a/dlls/winex11.drv/winex11.drv.spec
+++ b/dlls/winex11.drv/winex11.drv.spec
@@ -131,7 +131,6 @@ # XIM
# OpenGL
@ cdecl wglCreateContext(long) X11DRV_wglCreateContext
@ cdecl wglDeleteContext(long) X11DRV_wglDeleteContext
-@ cdecl wglGetCurrentDC() X11DRV_wglGetCurrentDC
@ cdecl wglGetIntegerv(long ptr) X11DRV_wglGetIntegerv
@ cdecl wglGetProcAddress(ptr) X11DRV_wglGetProcAddress
@ cdecl wglMakeCurrent(long long) X11DRV_wglMakeCurrent
More information about the wine-cvs
mailing list