Alexandre Julliard : gdi32: Allow user32 to specify the display driver to use.
Alexandre Julliard
julliard at winehq.org
Tue Oct 29 15:12:25 CDT 2013
Module: wine
Branch: master
Commit: 9675aa173a779eba5e97ee4bbbde6a6cfeced179
URL: http://source.winehq.org/git/wine.git/?a=commit;h=9675aa173a779eba5e97ee4bbbde6a6cfeced179
Author: Alexandre Julliard <julliard at winehq.org>
Date: Tue Oct 29 12:39:46 2013 +0100
gdi32: Allow user32 to specify the display driver to use.
---
dlls/gdi32/driver.c | 17 +++++++++++++++++
dlls/gdi32/gdi32.spec | 1 +
dlls/user32/driver.c | 1 +
include/wine/gdi_driver.h | 1 +
4 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c
index f625f32..73d11da 100644
--- a/dlls/gdi32/driver.c
+++ b/dlls/gdi32/driver.c
@@ -223,6 +223,23 @@ HMODULE CDECL __wine_get_driver_module( HDC hdc )
}
+/***********************************************************************
+ * __wine_set_display_driver_module (GDI32.@)
+ */
+void CDECL __wine_set_display_driver( HMODULE module )
+{
+ struct graphics_driver *driver;
+
+ if (!(driver = create_driver( module )))
+ {
+ ERR( "Could not create graphics driver\n" );
+ ExitProcess(1);
+ }
+ if (InterlockedCompareExchangePointer( (void **)&display_driver, driver, NULL ))
+ HeapFree( GetProcessHeap(), 0, driver );
+}
+
+
static INT nulldrv_AbortDoc( PHYSDEV dev )
{
return 0;
diff --git a/dlls/gdi32/gdi32.spec b/dlls/gdi32/gdi32.spec
index 65f1d0c..be6410d 100644
--- a/dlls/gdi32/gdi32.spec
+++ b/dlls/gdi32/gdi32.spec
@@ -515,6 +515,7 @@
# Graphics drivers
@ cdecl __wine_get_driver_module(long)
+@ cdecl __wine_set_display_driver(long)
# OpenGL
@ cdecl __wine_get_wgl_driver(long long)
diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c
index fdcf853..37de424 100644
--- a/dlls/user32/driver.c
+++ b/dlls/user32/driver.c
@@ -158,6 +158,7 @@ static const USER_DRIVER *load_driver(void)
}
else LdrAddRefDll( 0, graphics_driver );
+ __wine_set_display_driver( graphics_driver );
register_builtin_classes();
return driver;
diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h
index 83f4885..ad9c7c4 100644
--- a/include/wine/gdi_driver.h
+++ b/include/wine/gdi_driver.h
@@ -277,6 +277,7 @@ extern void CDECL __wine_make_gdi_object_system( HGDIOBJ handle, BOOL set );
extern void CDECL __wine_set_visible_region( HDC hdc, HRGN hrgn, const RECT *vis_rect,
const RECT *device_rect, struct window_surface *surface );
extern HMODULE CDECL __wine_get_driver_module( HDC hdc );
+extern void CDECL __wine_set_display_driver( HMODULE module );
extern struct opengl_funcs * CDECL __wine_get_wgl_driver( HDC hdc, UINT version );
#endif /* __WINE_WINE_GDI_DRIVER_H */
More information about the wine-cvs
mailing list