[PATCH 3/9] user32: moving EnumDisplayDevices to drivers
Donat Enikeev
donat at enikeev.net
Mon Apr 24 15:49:25 CDT 2017
Based on Ken Thomases <ken at codeweavers.com> staging patches
Signed-off-by: Donat Enikeev <donat at enikeev.net>
---
dlls/user32/driver.c | 15 +++++++++++++++
dlls/user32/misc.c | 34 +++++++++-------------------------
dlls/user32/user_private.h | 1 +
3 files changed, 25 insertions(+), 25 deletions(-)
diff --git a/dlls/user32/driver.c b/dlls/user32/driver.c
index d59a2ea..bcc57a2 100644
--- a/dlls/user32/driver.c
+++ b/dlls/user32/driver.c
@@ -126,6 +126,7 @@ static const USER_DRIVER *load_driver(void)
GET_USER_FUNC(UpdateClipboard);
GET_USER_FUNC(ChangeDisplaySettingsEx);
GET_USER_FUNC(EnumDisplayMonitors);
+ GET_USER_FUNC(EnumDisplayDevices);
GET_USER_FUNC(EnumDisplaySettingsEx);
GET_USER_FUNC(GetMonitorInfo);
GET_USER_FUNC(CreateDesktopWindow);
@@ -357,6 +358,12 @@ static BOOL CDECL nulldrv_EnumDisplayMonitors( HDC hdc, LPRECT rect, MONITORENUM
return FALSE;
}
+static BOOL CDECL nulldrv_EnumDisplayDevices( LPCWSTR lpDevice, DWORD iDevNum, LPDISPLAY_DEVICEW lpDisplayDevice,
+ DWORD dwFlags )
+{
+ return FALSE;
+}
+
static BOOL CDECL nulldrv_EnumDisplaySettingsEx( LPCWSTR name, DWORD num, LPDEVMODEW mode, DWORD flags )
{
return FALSE;
@@ -527,6 +534,7 @@ static USER_DRIVER null_driver =
/* display modes */
nulldrv_ChangeDisplaySettingsEx,
nulldrv_EnumDisplayMonitors,
+ nulldrv_EnumDisplayDevices,
nulldrv_EnumDisplaySettingsEx,
nulldrv_GetMonitorInfo,
/* windowing functions */
@@ -673,6 +681,12 @@ static BOOL CDECL loaderdrv_EnumDisplayMonitors( HDC hdc, LPRECT rect, MONITOREN
return load_driver()->pEnumDisplayMonitors( hdc, rect, proc, lp );
}
+static BOOL CDECL loaderdrv_EnumDisplayDevices( LPCWSTR lpDevice, DWORD iDevNum,
+ LPDISPLAY_DEVICEW lpDisplayDevice, DWORD dwFlags )
+{
+ return load_driver()->pEnumDisplayDevices( lpDevice, iDevNum, lpDisplayDevice, dwFlags );
+}
+
static BOOL CDECL loaderdrv_EnumDisplaySettingsEx( LPCWSTR name, DWORD num, LPDEVMODEW mode, DWORD flags )
{
return load_driver()->pEnumDisplaySettingsEx( name, num, mode, flags );
@@ -748,6 +762,7 @@ static USER_DRIVER lazy_load_driver =
/* display modes */
loaderdrv_ChangeDisplaySettingsEx,
loaderdrv_EnumDisplayMonitors,
+ loaderdrv_EnumDisplayDevices,
loaderdrv_EnumDisplaySettingsEx,
loaderdrv_GetMonitorInfo,
/* windowing functions */
diff --git a/dlls/user32/misc.c b/dlls/user32/misc.c
index fa0502e..c8cb2e8 100644
--- a/dlls/user32/misc.c
+++ b/dlls/user32/misc.c
@@ -243,12 +243,6 @@ DWORD WINAPI SetLogonNotifyWindow(HWINSTA hwinsta,HWND hwnd)
return 1;
}
-static const WCHAR primary_device_name[] = {'\\','\\','.','\\','D','I','S','P','L','A','Y','1',0};
-static const WCHAR primary_device_string[] = {'X','1','1',' ','W','i','n','d','o','w','i','n','g',' ',
- 'S','y','s','t','e','m',0};
-static const WCHAR primary_device_deviceid[] = {'P','C','I','\\','V','E','N','_','0','0','0','0','&',
- 'D','E','V','_','0','0','0','0',0};
-
/***********************************************************************
* EnumDisplayDevicesA (USER32.@)
*/
@@ -285,28 +279,18 @@ BOOL WINAPI EnumDisplayDevicesA( LPCSTR lpDevice, DWORD i, LPDISPLAY_DEVICEA lpD
/***********************************************************************
* EnumDisplayDevicesW (USER32.@)
*/
-BOOL WINAPI EnumDisplayDevicesW( LPCWSTR lpDevice, DWORD i, LPDISPLAY_DEVICEW lpDisplayDevice,
+BOOL WINAPI EnumDisplayDevicesW( LPCWSTR lpDevice, DWORD iDevNum, LPDISPLAY_DEVICEW lpDisplayDevice,
DWORD dwFlags )
{
- FIXME("(%s,%d,%p,0x%08x), stub!\n",debugstr_w(lpDevice),i,lpDisplayDevice,dwFlags);
-
- if (i)
- return FALSE;
-
- memcpy(lpDisplayDevice->DeviceName, primary_device_name, sizeof(primary_device_name));
- memcpy(lpDisplayDevice->DeviceString, primary_device_string, sizeof(primary_device_string));
-
- lpDisplayDevice->StateFlags =
- DISPLAY_DEVICE_ATTACHED_TO_DESKTOP |
- DISPLAY_DEVICE_PRIMARY_DEVICE |
- DISPLAY_DEVICE_VGA_COMPATIBLE;
-
- if(lpDisplayDevice->cb >= offsetof(DISPLAY_DEVICEW, DeviceID) + sizeof(lpDisplayDevice->DeviceID))
- memcpy(lpDisplayDevice->DeviceID, primary_device_deviceid, sizeof(primary_device_deviceid));
- if(lpDisplayDevice->cb >= offsetof(DISPLAY_DEVICEW, DeviceKey) + sizeof(lpDisplayDevice->DeviceKey))
- lpDisplayDevice->DeviceKey[0] = 0;
+ BOOL ret;
+ TRACE("%s %d %p 0x%08x\n",debugstr_w(lpDevice),iDevNum,lpDisplayDevice,dwFlags);
- return TRUE;
+ ret = USER_Driver->pEnumDisplayDevices( lpDevice, iDevNum, lpDisplayDevice, dwFlags );
+ if (ret)
+ TRACE("StateFlags %04x, DeviceName '%s', DeviceString '%s'\n", lpDisplayDevice->StateFlags,
+ debugstr_w(lpDisplayDevice->DeviceName),
+ debugstr_w(lpDisplayDevice->DeviceString));
+ return ret;
}
struct monitor_enum_info
diff --git a/dlls/user32/user_private.h b/dlls/user32/user_private.h
index 0b5b2ac..70773e3 100644
--- a/dlls/user32/user_private.h
+++ b/dlls/user32/user_private.h
@@ -84,6 +84,7 @@ typedef struct tagUSER_DRIVER {
/* display modes */
LONG (CDECL *pChangeDisplaySettingsEx)(LPCWSTR,LPDEVMODEW,HWND,DWORD,LPVOID);
BOOL (CDECL *pEnumDisplayMonitors)(HDC,LPRECT,MONITORENUMPROC,LPARAM);
+ BOOL (CDECL *pEnumDisplayDevices)(LPCWSTR,DWORD,LPDISPLAY_DEVICEW,DWORD);
BOOL (CDECL *pEnumDisplaySettingsEx)(LPCWSTR,DWORD,LPDEVMODEW,DWORD);
BOOL (CDECL *pGetMonitorInfo)(HMONITOR,MONITORINFO*);
/* windowing functions */
--
2.7.4
More information about the wine-patches
mailing list