Alexandre Julliard : gdi32: Fall back to GetSystemMetrics() for the screen size.
Alexandre Julliard
julliard at winehq.org
Wed Aug 22 16:12:29 CDT 2018
Module: wine
Branch: master
Commit: 6d395fcca4ae825afa481890b148ca73fd0db375
URL: https://source.winehq.org/git/wine.git/?a=commit;h=6d395fcca4ae825afa481890b148ca73fd0db375
Author: Alexandre Julliard <julliard at winehq.org>
Date: Wed Aug 22 11:21:05 2018 +0200
gdi32: Fall back to GetSystemMetrics() for the screen size.
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/gdi32/driver.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/dlls/gdi32/driver.c b/dlls/gdi32/driver.c
index c81a2e1..4a5058e 100644
--- a/dlls/gdi32/driver.c
+++ b/dlls/gdi32/driver.c
@@ -30,6 +30,7 @@
#include "winbase.h"
#include "ddrawgdi.h"
#include "wine/winbase16.h"
+#include "winuser.h"
#include "winternl.h"
#include "gdi_private.h"
@@ -60,6 +61,9 @@ static CRITICAL_SECTION_DEBUG critsect_debug =
};
static CRITICAL_SECTION driver_section = { &critsect_debug, -1, 0, 0, 0, 0 };
+static typeof(GetDesktopWindow) *pGetDesktopWindow;
+static typeof(GetSystemMetrics) *pGetSystemMetrics;
+
/**********************************************************************
* create_driver
*
@@ -97,7 +101,7 @@ static const struct gdi_dc_funcs *get_display_driver(void)
if (!display_driver)
{
HMODULE user32 = LoadLibraryA( "user32.dll" );
- HWND (WINAPI *pGetDesktopWindow)(void) = (void *)GetProcAddress( user32, "GetDesktopWindow" );
+ pGetDesktopWindow = (void *)GetProcAddress( user32, "GetDesktopWindow" );
if (!pGetDesktopWindow() || !display_driver)
{
@@ -166,6 +170,7 @@ done:
void CDECL __wine_set_display_driver( HMODULE module )
{
struct graphics_driver *driver;
+ HMODULE user32;
if (!(driver = create_driver( module )))
{
@@ -174,6 +179,9 @@ void CDECL __wine_set_display_driver( HMODULE module )
}
if (InterlockedCompareExchangePointer( (void **)&display_driver, driver, NULL ))
HeapFree( GetProcessHeap(), 0, driver );
+
+ user32 = LoadLibraryA( "user32.dll" );
+ pGetSystemMetrics = (void *)GetProcAddress( user32, "GetSystemMetrics" );
}
@@ -308,8 +316,8 @@ static INT nulldrv_GetDeviceCaps( PHYSDEV dev, INT cap )
GetDeviceCaps( dev->hdc, LOGPIXELSX ) * 10 );
case VERTSIZE: return MulDiv( GetDeviceCaps( dev->hdc, VERTRES ), 254,
GetDeviceCaps( dev->hdc, LOGPIXELSY ) * 10 );
- case HORZRES: return 640;
- case VERTRES: return 480;
+ case HORZRES: return pGetSystemMetrics ? pGetSystemMetrics( SM_CXSCREEN ) : 640;
+ case VERTRES: return pGetSystemMetrics ? pGetSystemMetrics( SM_CYSCREEN ) : 480;
case BITSPIXEL: return 32;
case PLANES: return 1;
case NUMBRUSHES: return -1;
More information about the wine-cvs
mailing list