Alexandre Julliard : gdi32: Add a null WGL driver.
Alexandre Julliard
julliard at winehq.org
Thu Jun 28 13:55:17 CDT 2012
Module: wine
Branch: master
Commit: e059d565ab192c76c0a150ea7b30b65d624b3713
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e059d565ab192c76c0a150ea7b30b65d624b3713
Author: Alexandre Julliard <julliard at winehq.org>
Date: Thu Jun 28 16:25:22 2012 +0200
gdi32: Add a null WGL driver.
---
dlls/gdi32/driver.c | 71 ++++++++++++++++++++++++++++++++++++++++++++-
dlls/winex11.drv/opengl.c | 7 +++-
2 files changed, 75 insertions(+), 3 deletions(-)
diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c
index 6bea480..ae774b0 100644
--- a/dlls/gdi32/driver.c
+++ b/dlls/gdi32/driver.c
@@ -50,6 +50,7 @@ static struct list drivers = LIST_INIT( drivers );
static struct graphics_driver *display_driver;
const struct gdi_dc_funcs *font_driver = NULL;
+static const struct wgl_funcs null_wgl_driver;
static CRITICAL_SECTION driver_section;
static CRITICAL_SECTION_DEBUG critsect_debug =
@@ -386,6 +387,11 @@ static UINT nulldrv_GetOutlineTextMetrics( PHYSDEV dev, UINT size, LPOUTLINETEXT
return 0;
}
+static INT nulldrv_GetPixelFormat( HDC hdc )
+{
+ return 0;
+}
+
static UINT nulldrv_GetSystemPaletteEntries( PHYSDEV dev, UINT start, UINT count, PALETTEENTRY *entries )
{
return 0;
@@ -660,11 +666,61 @@ static BOOL nulldrv_UnrealizePalette( HPALETTE palette )
return FALSE;
}
-static const struct wgl_funcs *nulldrv_wine_get_wgl_driver( PHYSDEV dev, UINT version )
+static BOOL nulldrv_wglCopyContext( HGLRC src, HGLRC dst, UINT mask )
+{
+ return FALSE;
+}
+
+static HGLRC nulldrv_wglCreateContext( HDC hdc )
+{
+ return 0;
+}
+
+static HGLRC nulldrv_wglCreateContextAttribsARB( HDC hdc, HGLRC share_ctx, const int *attribs )
+{
+ return 0;
+}
+
+static BOOL nulldrv_wglDeleteContext( HGLRC hglrc )
+{
+ return FALSE;
+}
+
+static HDC nulldrv_wglGetCurrentDC(void)
+{
+ return 0;
+}
+
+static PROC nulldrv_wglGetProcAddress( LPCSTR name )
{
return NULL;
}
+static BOOL nulldrv_wglMakeContextCurrentARB( HDC draw_hdc, HDC read_hdc, HGLRC hglrc )
+{
+ return FALSE;
+}
+
+static BOOL nulldrv_wglMakeCurrent( HDC hdc, HGLRC hglrc )
+{
+ return FALSE;
+}
+
+static BOOL nulldrv_wglShareLists( HGLRC org, HGLRC dst )
+{
+ return FALSE;
+}
+
+static const struct wgl_funcs *nulldrv_wine_get_wgl_driver( PHYSDEV dev, UINT version )
+{
+ if (version != WINE_GDI_DRIVER_VERSION)
+ {
+ ERR( "version mismatch, opengl32 wants %u but driver has %u\n", version, WINE_GDI_DRIVER_VERSION );
+ return NULL;
+ }
+ return &null_wgl_driver;
+}
+
const struct gdi_dc_funcs null_driver =
{
nulldrv_AbortDoc, /* pAbortDoc */
@@ -801,6 +857,19 @@ const struct gdi_dc_funcs null_driver =
GDI_PRIORITY_NULL_DRV /* priority */
};
+static const struct wgl_funcs null_wgl_driver =
+{
+ nulldrv_GetPixelFormat, /* p_GetPixelFormat */
+ nulldrv_wglCopyContext, /* p_wglCopyContext */
+ nulldrv_wglCreateContext, /* p_wglCreateContext */
+ nulldrv_wglCreateContextAttribsARB, /* p_wglCreateContextAttribsARB */
+ nulldrv_wglDeleteContext, /* p_wglDeleteContext */
+ nulldrv_wglGetCurrentDC, /* p_wglGetCurrentDC */
+ nulldrv_wglGetProcAddress, /* p_wglGetProcAddress */
+ nulldrv_wglMakeContextCurrentARB, /* p_wglMakeContextCurrentARB */
+ nulldrv_wglMakeCurrent, /* p_wglMakeCurrent */
+ nulldrv_wglShareLists, /* p_wglShareLists */
+};
/*****************************************************************************
* DRIVER_GetDriverName
diff --git a/dlls/winex11.drv/opengl.c b/dlls/winex11.drv/opengl.c
index eb8b79d..952fca9 100644
--- a/dlls/winex11.drv/opengl.c
+++ b/dlls/winex11.drv/opengl.c
@@ -3444,8 +3444,11 @@ static const struct wgl_funcs * glxdrv_wine_get_wgl_driver( PHYSDEV dev, UINT ve
ERR( "version mismatch, opengl32 wants %u but driver has %u\n", version, WINE_GDI_DRIVER_VERSION );
return NULL;
}
- if (!has_opengl()) return NULL;
- return &glxdrv_wgl_funcs;
+
+ if (has_opengl()) return &glxdrv_wgl_funcs;
+
+ dev = GET_NEXT_PHYSDEV( dev, wine_get_wgl_driver );
+ return dev->funcs->wine_get_wgl_driver( dev, version );
}
static const struct gdi_dc_funcs glxdrv_funcs =
More information about the wine-cvs
mailing list