Chris Robinson : wgl: Override glFinish and glFlush.
Alexandre Julliard
julliard at winehq.org
Tue Sep 25 07:50:55 CDT 2007
Module: wine
Branch: master
Commit: 665a8add929d45c5a7d5de4023ea197f04acff9c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=665a8add929d45c5a7d5de4023ea197f04acff9c
Author: Chris Robinson <chris.kcat at gmail.com>
Date: Sat Sep 22 20:45:27 2007 -0700
wgl: Override glFinish and glFlush.
---
dlls/opengl32/make_opengl | 2 ++
dlls/opengl32/opengl_norm.c | 20 --------------------
dlls/opengl32/wgl.c | 22 ++++++++++++++++++++++
dlls/winex11.drv/opengl.c | 22 +++++++++++++++++++++-
4 files changed, 45 insertions(+), 21 deletions(-)
diff --git a/dlls/opengl32/make_opengl b/dlls/opengl32/make_opengl
index 381b1a9..b14b5cf 100755
--- a/dlls/opengl32/make_opengl
+++ b/dlls/opengl32/make_opengl
@@ -220,6 +220,8 @@ sub GenerateThunk($$$$$)
return "" if $func_ref->[0] eq "glDisable";
return "" if $func_ref->[0] eq "glScissor";
return "" if $func_ref->[0] eq "glViewport";
+ return "" if $func_ref->[0] eq "glFinish";
+ return "" if $func_ref->[0] eq "glFlush";
# If for opengl_norm.c, generate a nice heading otherwise Patrik won't be happy :-)
# Patrik says: Well I would be even happier if a (OPENGL32.@) was added as well. Done. :-)
diff --git a/dlls/opengl32/opengl_norm.c b/dlls/opengl32/opengl_norm.c
index 6534301..69acc85 100644
--- a/dlls/opengl32/opengl_norm.c
+++ b/dlls/opengl32/opengl_norm.c
@@ -1060,26 +1060,6 @@ void WINAPI wine_glFeedbackBuffer( GLsizei size, GLenum type, GLfloat* buffer )
}
/***********************************************************************
- * glFinish (OPENGL32.@)
- */
-void WINAPI wine_glFinish( void ) {
- TRACE("()\n");
- ENTER_GL();
- glFinish( );
- LEAVE_GL();
-}
-
-/***********************************************************************
- * glFlush (OPENGL32.@)
- */
-void WINAPI wine_glFlush( void ) {
- TRACE("()\n");
- ENTER_GL();
- glFlush( );
- LEAVE_GL();
-}
-
-/***********************************************************************
* glFogf (OPENGL32.@)
*/
void WINAPI wine_glFogf( GLenum pname, GLfloat param ) {
diff --git a/dlls/opengl32/wgl.c b/dlls/opengl32/wgl.c
index 029f361..deac8db 100644
--- a/dlls/opengl32/wgl.c
+++ b/dlls/opengl32/wgl.c
@@ -54,6 +54,8 @@ typedef struct wine_wgl_s {
GLboolean WINAPI (*p_wglIsEnabled)(GLenum cap);
void WINAPI (*p_wglScissor)(GLint x, GLint y, GLsizei width, GLsizei height);
void WINAPI (*p_wglViewport)(GLint x, GLint y, GLsizei width, GLsizei height);
+ void WINAPI (*p_wglFinish)(void);
+ void WINAPI (*p_wglFlush)(void);
} wine_wgl_t;
/** global wgl object */
@@ -614,6 +616,24 @@ void WINAPI wine_glViewport( GLint x, GLint y, GLsizei width, GLsizei height )
}
/***********************************************************************
+ * glFinish (OPENGL32.@)
+ */
+void WINAPI wine_glFinish( void )
+{
+ TRACE("()\n");
+ wine_wgl.p_wglFinish();
+}
+
+/***********************************************************************
+ * glFlush (OPENGL32.@)
+ */
+void WINAPI wine_glFlush( void )
+{
+ TRACE("()\n");
+ wine_wgl.p_wglFlush();
+}
+
+/***********************************************************************
* glGetString (OPENGL32.@)
*/
const GLubyte * WINAPI wine_glGetString( GLenum name )
@@ -705,6 +725,8 @@ static BOOL process_attach(void)
wine_wgl.p_wglIsEnabled = (void *)wine_wgl.p_wglGetProcAddress("wglIsEnabled");
wine_wgl.p_wglScissor = (void *)wine_wgl.p_wglGetProcAddress("wglScissor");
wine_wgl.p_wglViewport = (void *)wine_wgl.p_wglGetProcAddress("wglViewport");
+ wine_wgl.p_wglFinish = (void *)wine_wgl.p_wglGetProcAddress("wglFinish");
+ wine_wgl.p_wglFlush = (void *)wine_wgl.p_wglGetProcAddress("wglFlush");
internal_gl_disabled_extensions[0] = 0;
if (!RegOpenKeyA( HKEY_CURRENT_USER, "Software\\Wine\\OpenGL", &hkey)) {
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index 091aee5..b867abd 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -72,7 +72,7 @@ typedef struct wine_glextension {
struct {
const char *funcName;
void *funcAddress;
- } extEntryPoints[8];
+ } extEntryPoints[9];
} WineGLExtension;
struct WineGLInfo {
@@ -277,6 +277,8 @@ MAKE_FUNCPTR(glReadPixels)
MAKE_FUNCPTR(glScissor)
MAKE_FUNCPTR(glTexImage2D)
MAKE_FUNCPTR(glViewport)
+MAKE_FUNCPTR(glFinish)
+MAKE_FUNCPTR(glFlush)
#undef MAKE_FUNCPTR
static BOOL X11DRV_WineGL_InitOpenglInfo(void)
@@ -428,6 +430,8 @@ LOAD_FUNCPTR(glReadPixels)
LOAD_FUNCPTR(glScissor)
LOAD_FUNCPTR(glTexImage2D)
LOAD_FUNCPTR(glViewport)
+LOAD_FUNCPTR(glFinish)
+LOAD_FUNCPTR(glFlush)
#undef LOAD_FUNCPTR
/* It doesn't matter if these fail. They'll only be used if the driver reports
@@ -2054,6 +2058,20 @@ static void WINAPI X11DRV_wglViewport(GLint x, GLint y, GLsizei width, GLsizei h
}
}
+static void WINAPI X11DRV_wglFinish(void)
+{
+ wine_tsx11_lock();
+ pglFinish();
+ wine_tsx11_unlock();
+}
+
+static void WINAPI X11DRV_wglFlush(void)
+{
+ wine_tsx11_lock();
+ pglFlush();
+ wine_tsx11_unlock();
+}
+
/**
* X11DRV_wglGetExtensionsStringARB
*
@@ -3093,6 +3111,8 @@ static const WineGLExtension WGL_internal_functions =
{ "wglIsEnabled", X11DRV_wglIsEnabled },
{ "wglScissor", X11DRV_wglScissor },
{ "wglViewport", X11DRV_wglViewport },
+ { "wglFinish", X11DRV_wglFinish },
+ { "wglFlush", X11DRV_wglFlush },
}
};
More information about the wine-cvs
mailing list