Author: greatlrd
Date: Tue Dec 12 20:56:27 2006
New Revision: 25131
URL:
http://svn.reactos.org/svn/reactos?rev=25131&view=rev
Log:
remove fireball hack in changedisplay, do not hard code the display number,
with this patch we are now extract the display number from the desktop and use it
patch was wroten by me and janderwald. I was to lazy finish it so janderwald did finish
it
thanks janderwald.
Modified:
trunk/reactos/subsystems/win32/win32k/objects/dc.c
Modified: trunk/reactos/subsystems/win32/win32k/objects/dc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/subsystems/win32/win32k/ob…
==============================================================================
--- trunk/reactos/subsystems/win32/win32k/objects/dc.c (original)
+++ trunk/reactos/subsystems/win32/win32k/objects/dc.c Tue Dec 12 20:56:27 2006
@@ -2925,9 +2925,30 @@
/* Check if pDeviceName is NULL, we need to retrieve it */
if (pDeviceName == NULL)
- {
- /* FIXME: It is a hack, but there is no proper way right now */
- RtlInitUnicodeString(&InDeviceName, L"\\\\.\\DISPLAY1");
+ {
+ WCHAR szBuffer[MAX_DRIVER_NAME];
+ PDC DC;
+ PWINDOW_OBJECT Wnd=NULL;
+ HWND hWnd;
+ HDC hDC;
+
+ hWnd = IntGetDesktopWindow();
+ if (hWnd && !(Wnd = UserGetWindowObject(hWnd)))
+ {
+ return FALSE;
+ }
+
+ hDC = (HDC)UserGetWindowDC(Wnd);
+
+ DC = DC_LockDc(hDC);
+ if (NULL == DC)
+ {
+ return FALSE;
+ }
+ swprintf (szBuffer, L"\\\\.\\DISPLAY%lu", ((GDIDEVICE
*)DC->GDIDevice)->DisplayNumber);
+ DC_UnlockDc(DC);
+
+ RtlInitUnicodeString(&InDeviceName, szBuffer);
pDeviceName = &InDeviceName;
}