diff options
Diffstat (limited to 'xorg-server/hw/xwin')
23 files changed, 179 insertions, 414 deletions
diff --git a/xorg-server/hw/xwin/Makefile.am b/xorg-server/hw/xwin/Makefile.am index f593ac12f..50f99b68c 100644 --- a/xorg-server/hw/xwin/Makefile.am +++ b/xorg-server/hw/xwin/Makefile.am @@ -5,7 +5,6 @@ SRCS_CLIPBOARD = \ winclipboardinit.c \ winclipboardtextconv.c \ winclipboardthread.c \ - winclipboardunicode.c \ winclipboardwndproc.c \ winclipboardwrappers.c \ winclipboardxevents.c diff --git a/xorg-server/hw/xwin/README b/xorg-server/hw/xwin/README deleted file mode 100644 index 9f7090344..000000000 --- a/xorg-server/hw/xwin/README +++ /dev/null @@ -1,141 +0,0 @@ -Cygwin/X Release Notes
-======================
-
-Release X11R6.7
-===============
-
-Cygwin/X has continued its rapid pace of development that it has sustained
-since Spring 2001 and this release shows it, we now have: a stable and fast
-multi-window mode, seamless clipboard integration, a configurable tray menu
-icon, popups on error messages pointing users to the log file and our mailing
-list, the beginnings of indirect 3D acceleration for OpenGL applications,
-improved non-US keyboard and clipboard support, and only a handful of bugs
-that continue to be reported.
-
-Between the XFree86 4.3.0 release and the X.Org X11R6.7 release the Cyg-
-win/XFree86 project broke away from The XFree86 Project, Inc. due to a lack
-of support from the XFree86 project. As such, the Cygwin/XFree86 project was
-renamed to the Cygwin/X project and the upstream source code tree that Cyg-
-win/X pulls from and pushes to is now the tree managed by the X.Org Founda-
-tion. The Cygwin/X project has seen a rush of development and interest in
-the project since the split; one metric showing this is that the number of
-CVS committers we have has gone from zero to six.
-
-The most outstanding features of this release are
-
- o Major multi-window mode improvements. (Takuma Murakami, Earle F.
- Philhower III)
-
- o Initial work of accelerated OpenGL using the windows OpenGL drivers.
- (Alexander Gottwald)
-
- o Massive rework of clipboard integration with windows. (Harold L Hunt II,
- Kensuke Matsuzaki)
-
- o Improved Japanese clipboard and keyboard support. (Kensuke Matsuzaki,
- Takuma Murakami, Alexander Gottwald)
-
- o Customizable tray menu icon allowing shortcuts to start programs,
- etc.(Earle F. Philhower III)
-
- o New icons. (Jehan Bing, Michael Bax, Benjamin Rienfenstahl)
-
- o Fix some multi-monitor problems.(Takuma Murakami)
-
- o Fix repeated key strokes. (Ivan Pascal)
-
- o Automatic keyboard layouts for the most frequently used keyboard lay-
- outs. (Alexander Gottwald)
-
- o Built in SHM support with detection of the SHM engine (cygserver).
- (Ralf Habacker, Harold L Hunt II)
-
- o Merged in work on the NativeGDI engine. (Alan Hourihane)
-
-OpenGL with Cygwin/X
-====================
-
-Cygwin/X has supported GLX only with software rendering provided by the Mesa
-library. Starting with X11R6.7 we add support for hardware accelerated OpenGL.
-
-This support is still under development and still has some bigger problems.
-To provide both versions (the stable software rendering and the new hardware
-accelerated) we ship to binaries. XWin.exe contains the software rendering
-and XWin_GL.exe uses the hardware acceleration provided by the windows drivers.
-
-The known problems with hardware accelerated OpenGL are:
-
- o Only multiwindow mode is useful. In the other modes the OpenGL output
- does not align with the X11 windows.
-
- o Using two programs which require different visuals will fail. For example
- glxgears and glxinfo will not work without restarting XWin_GL.exe.
-
- o OpenGL extensions and functions from OpenGL 1.2 and later should work
- but are not completely tested.
-
- o The standard Windows OpenGL driver will produce no output. Use the one
- from your video adapter vendor.
-
-If you notice problems with some programs please send a message with the
-logfile /tmp/XWin.log and a short error description to <cygwin-xfree@cygwin.com>
-
-The hardware accelerated OpenGL was tested using:
-
- o glxgears
- o glxinfo
- o blender
- o tuxkart
- o GLUT demos (some did fail)
- o tuxracer (currently not working)
-
-
-Release X11R6.8
-===============
-
-Having reached a quite mature state in release X11R6.7 the development
-has slowed down a little bit. Some of the former active developers have
-retired or cut their work for the Cygwin/X project due to conflicts with
-job, study and family.
-
-The X11R6.8 release now includes major improvements from the xserver project.
-This includes the XFixes, Damage, Composite and XEVIE extension which is a
-major step towards allowing Cygwin/X to have real transparency.
-
-But at the current state Composite is not working with Cygwin/X. Not all code
-in the Cygwin/X Server has been updated to support the Composite feature and
-using it will even crash the xserver. But as a second problem nearly all
-functions required for compositing are lacking acceleration in Cygwin/X so
-the feature would not be very useful if it would work. So it is disabled by
-default.
-
-OpenGL with Cygwin/X
-====================
-
-The OpenGL support has lost some of it's limitations from the last release
-and should be much more stable. But due to missing wide spread testing in
-the community it is still available in a separate program. XWin still uses
-the old software OpenGL which is known to be stable.
-
-The known problems with hardware accelerated OpenGL are:
-
- o Only multiwindow mode is useful. In the other modes the OpenGL output
- does not align with the X11 windows.
-
- o OpenGL extensions and functions from OpenGL 1.2 and later should work
- but are not completely tested.
-
- o The standard Windows OpenGL driver will produce no output. Use the one
- from your video adapter vendor.
-
-If you notice problems with some programs please send a message with the
-logfile /tmp/XWin.log and a short error description to <cygwin-xfree@cygwin.com>
-
-The hardware accelerated OpenGL was tested using:
-
- o glxgears
- o glxinfo
- o blender
- o tuxkart
- o GLUT demos (some did fail)
-
diff --git a/xorg-server/hw/xwin/makefile b/xorg-server/hw/xwin/makefile index 6492e3a07..8523d0f26 100644 --- a/xorg-server/hw/xwin/makefile +++ b/xorg-server/hw/xwin/makefile @@ -14,7 +14,6 @@ SRCS_CLIPBOARD = \ winclipboardinit.c \ winclipboardtextconv.c \ winclipboardthread.c \ - winclipboardunicode.c \ winclipboardwndproc.c \ winclipboardwrappers.c \ winclipboardxevents.c diff --git a/xorg-server/hw/xwin/man/XWin.man b/xorg-server/hw/xwin/man/XWin.man index d03a36521..dbadad6f5 100644 --- a/xorg-server/hw/xwin/man/XWin.man +++ b/xorg-server/hw/xwin/man/XWin.man @@ -313,18 +313,22 @@ exit silently and don't display any error message. .B "\-xkbvariant \fIvariant\fp" These options configure the xkeyboard extension to load a particular keyboard map as the X server starts. The behavior is similar -to the \fIsetxkbmap\fP program. The layout data is located at \fI -__datadir__/X11/xkb/\fP. Additional information is found in the -README files therein and in the man page of \fIsetxkbmap\fP. For example -in order to load a German layout for a pc105 keyboard one uses -the options: +to the \fIsetxkbmap\fP(1) program. + +See the \fIxkeyboard-config\fP(__miscmansuffix__) manual page for a list of +keyboard configurations. + +The keyboard layout data is located at \fI__datadir__/X11/xkb/\fP. Additional information +can be found in the README files there and in the \fIsetxkbmap\fP(1) manual page. + +For example, in order to load a German layout for a pc105 keyboard, use the options: .br .I " \-xkblayout de \-xkbmodel pc105" -Alternatively one may use the \fIsetxkbmap\fP program after \fIXWin\fP is +Alternatively, you can use the \fIsetxkbmap\fP(1) program after \fIXWin\fP is running. -The default is to select a configuration matching your current layout as +The default is to select a keyboard configuration matching your current layout as reported by \fIWindows\fP, if known, or the default X server configuration if no matching keyboard configuration was found. @@ -370,7 +374,7 @@ window, in both the generic case and for particular programs. * To change the style that is associated to the \fIWindows\fP window that \fXWin I-multiwindow\fP produces for each top-level X window. .PP -The format of the \fI.XWinrc\fP file is given in the man page XWinrc(5). +The format of the \fI.XWinrc\fP file is given in the XWinrc(5) manual page. .SH EXAMPLES Need some examples @@ -378,15 +382,15 @@ Need some examples .SH "SEE ALSO" X(__miscmansuffix__), Xserver(1), xdm(1), xinit(1), XWinrc(__filemansuffix__), -setxkbmap(1), xkeyboard-config (__miscmansuffix__). +setxkbmap(1), xkeyboard-config(__miscmansuffix__). .SH BUGS .I XWin -and this man page still have many limitations. +and this manual page still have many limitations. The \fIXWin\fP software is continuously developing; it is therefore possible that -this man page is not up to date. It is always prudent to +this manual page is not up to date. It is always prudent to look also at the output of \fIXWin -help\fP in order to check the options that are operative. diff --git a/xorg-server/hw/xwin/win.h b/xorg-server/hw/xwin/win.h index b49859ddc..965be46f1 100644 --- a/xorg-server/hw/xwin/win.h +++ b/xorg-server/hw/xwin/win.h @@ -349,8 +349,7 @@ typedef struct { DWORD dwScreen; int iMonitor; - HMONITOR hMonitor; - + HMONITOR hMonitor; DWORD dwUserWidth; DWORD dwUserHeight; DWORD dwWidth; diff --git a/xorg-server/hw/xwin/winblock.c b/xorg-server/hw/xwin/winblock.c index c1a6e705a..480e3bd48 100644 --- a/xorg-server/hw/xwin/winblock.c +++ b/xorg-server/hw/xwin/winblock.c @@ -58,7 +58,7 @@ winBlockHandler(ScreenPtr pScreen, if (pScreenPriv != NULL && !pScreenPriv->fServerStarted) { int iReturn; - winDebug("winBlockHandler - Releasing pmServerStarted\n"); + ErrorF("winBlockHandler - pthread_mutex_unlock()\n"); /* Flag that modules are to be started */ pScreenPriv->fServerStarted = TRUE; diff --git a/xorg-server/hw/xwin/winclipboard.h b/xorg-server/hw/xwin/winclipboard.h index d430b343f..a267dec7c 100644 --- a/xorg-server/hw/xwin/winclipboard.h +++ b/xorg-server/hw/xwin/winclipboard.h @@ -110,13 +110,6 @@ void winDeinitClipboard(void); /* - * winclipboardunicode.c - */ - -Bool - winClipboardDetectUnicodeSupport(void); - -/* * winclipboardwndproc.c */ diff --git a/xorg-server/hw/xwin/winclipboardinit.c b/xorg-server/hw/xwin/winclipboardinit.c index 1ddb35775..90fcf0086 100644 --- a/xorg-server/hw/xwin/winclipboardinit.c +++ b/xorg-server/hw/xwin/winclipboardinit.c @@ -61,7 +61,7 @@ extern HWND g_hwndClipboard; Bool winInitClipboard(void) { - winDebug ("winInitClipboard ()\n"); + winDebug("winInitClipboard ()\n"); /* Wrap some internal server functions */ if (ProcVector[X_SetSelectionOwner] != winProcSetSelectionOwner) { diff --git a/xorg-server/hw/xwin/winclipboardthread.c b/xorg-server/hw/xwin/winclipboardthread.c index 50643149b..eb32db88c 100644 --- a/xorg-server/hw/xwin/winclipboardthread.c +++ b/xorg-server/hw/xwin/winclipboardthread.c @@ -67,7 +67,6 @@ static jmp_buf g_jmpEntry; static XIOErrorHandler g_winClipboardOldIOErrorHandler; static pthread_t g_winClipboardProcThread; -Bool g_fUnicodeSupport = FALSE; Bool g_fUseUnicode = FALSE; /* @@ -112,11 +111,8 @@ winClipboardProc(void *pvNotUsed) winDebug ("winClipboardProc - Hello\n"); - /* Do we have Unicode support? */ - g_fUnicodeSupport = winClipboardDetectUnicodeSupport(); - /* Do we use Unicode clipboard? */ - fUseUnicode = g_fUnicodeClipboard && g_fUnicodeSupport; + fUseUnicode = g_fUnicodeClipboard; /* Save the Unicode support flag in a global */ g_fUseUnicode = fUseUnicode; diff --git a/xorg-server/hw/xwin/winclipboardunicode.c b/xorg-server/hw/xwin/winclipboardunicode.c deleted file mode 100644 index 530ad9a01..000000000 --- a/xorg-server/hw/xwin/winclipboardunicode.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - *Copyright (C) 2003-2004 Harold L Hunt II All Rights Reserved. - * - *Permission is hereby granted, free of charge, to any person obtaining - * a copy of this software and associated documentation files (the - *"Software"), to deal in the Software without restriction, including - *without limitation the rights to use, copy, modify, merge, publish, - *distribute, sublicense, and/or sell copies of the Software, and to - *permit persons to whom the Software is furnished to do so, subject to - *the following conditions: - * - *The above copyright notice and this permission notice shall be - *included in all copies or substantial portions of the Software. - * - *THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - *EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - *MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - *NONINFRINGEMENT. IN NO EVENT SHALL HAROLD L HUNT II BE LIABLE FOR - *ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF - *CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - *WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - *Except as contained in this notice, the name of Harold L Hunt II - *shall not be used in advertising or otherwise to promote the sale, use - *or other dealings in this Software without prior written authorization - *from Harold L Hunt II. - * - * Authors: Harold L Hunt II - */ - -#ifdef HAVE_XWIN_CONFIG_H -#include <xwin-config.h> -#endif -#include "winclipboard.h" - -/* - * Determine whether we suport Unicode or not. - * NOTE: Currently, just check if we are on an NT-based platform or not. - */ - -Bool -winClipboardDetectUnicodeSupport(void) -{ - Bool fReturn = FALSE; - OSVERSIONINFOEX osvi = { 0 }; - - /* Get operating system version information */ - osvi.dwOSVersionInfoSize = sizeof(osvi); - GetVersionEx ((LPOSVERSIONINFO)&osvi); - - /* Branch on platform ID */ - switch (osvi.dwPlatformId) { - case VER_PLATFORM_WIN32_NT: - if (osvi.dwMajorVersion >= 6) - { - if (osvi.wProductType == VER_NT_WORKSTATION) - winDebug ("OS: Windows Vista\n"); - else - winDebug ("OS: Windows Server 2008\n"); - fReturn = TRUE; - } - else if (osvi.dwMajorVersion == 5) - { - if (osvi.dwMinorVersion == 2) - { - winDebug ("OS: Windows 2003\n"); - fReturn = TRUE; - } - else if (osvi.dwMinorVersion == 1) - { - winDebug ("OS: Windows XP\n"); - fReturn = TRUE; - } - else if (osvi.dwMinorVersion == 0) winDebug ("OS: Windows 2000\n"); - } - else if (osvi.dwMajorVersion <= 4) winDebug ("OS: Windows NT\n"); - break; - - case VER_PLATFORM_WIN32_WINDOWS: - winDebug ("OS: Windows 95/98/Me\n"); - break; - } - - return fReturn; -} diff --git a/xorg-server/hw/xwin/winclipboardwndproc.c b/xorg-server/hw/xwin/winclipboardwndproc.c index 0dd39703d..00b0fe8fd 100644 --- a/xorg-server/hw/xwin/winclipboardwndproc.c +++ b/xorg-server/hw/xwin/winclipboardwndproc.c @@ -53,7 +53,6 @@ */ extern Bool g_fUseUnicode; -extern Bool g_fUnicodeSupport; extern void *g_pClipboardDisplay; extern Window g_iClipboardWindow; extern Atom g_atomLastOwnedSelection; @@ -66,6 +65,7 @@ extern Bool g_fClipboardPrimary; static int + winProcessXEventsTimeout(HWND hwnd, int iWindow, Display * pDisplay, Bool fUseUnicode, int iTimeoutSec); @@ -421,7 +421,7 @@ winClipboardWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) if (message == WM_RENDERALLFORMATS) fConvertToUnicode = FALSE; else - fConvertToUnicode = g_fUnicodeSupport && (CF_UNICODETEXT == wParam); + fConvertToUnicode = (CF_UNICODETEXT == wParam); /* Request the selection contents */ iReturn = XConvertSelection(pDisplay, @@ -472,8 +472,7 @@ winClipboardWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) if (WIN_XEVENTS_NOTIFY != iReturn) { ErrorF("winClipboardWindowProc - winProcessXEventsTimeout should have returned WIN_XEVENTS_NOTIFY was %d\n",iReturn); /* Paste no data, to satisfy required call to SetClipboardData */ - if (g_fUnicodeSupport) - SetClipboardData(CF_UNICODETEXT, NULL); + SetClipboardData(CF_UNICODETEXT, NULL); SetClipboardData(CF_TEXT, NULL); ErrorF diff --git a/xorg-server/hw/xwin/winclipboardwrappers.c b/xorg-server/hw/xwin/winclipboardwrappers.c index 4005bf176..247c8ea43 100644 --- a/xorg-server/hw/xwin/winclipboardwrappers.c +++ b/xorg-server/hw/xwin/winclipboardwrappers.c @@ -59,7 +59,6 @@ DISPATCH_PROC(winProcSetSelectionOwner); * References to external symbols */ -extern Bool g_fUnicodeSupport; extern int g_iNumScreens; extern unsigned int g_uiAuthDataLen; extern char *g_pAuthData; @@ -89,7 +88,8 @@ winProcEstablishConnection(ClientPtr client) static unsigned long s_ulServerGeneration = 0; #ifdef WINDBG - if (s_iCallCount == 0) winDebug ("winProcEstablishConnection - Hello\n"); + if (s_iCallCount == 0) + winDebug("winProcEstablishConnection - Hello\n"); #endif /* Do nothing if clipboard is not enabled */ @@ -327,12 +327,8 @@ winProcSetSelectionOwner(ClientPtr client) } winDebug("winProcSetSelectionOwner - SetClipboardData NULL\n"); - - /* Advertise Unicode if we support it */ - if (g_fUnicodeSupport) - SetClipboardData(CF_UNICODETEXT, NULL); - - /* Always advertise regular text */ + /* Advertise regular text and unicode */ + SetClipboardData(CF_UNICODETEXT, NULL); SetClipboardData(CF_TEXT, NULL); /* Save handle to last owned selection */ diff --git a/xorg-server/hw/xwin/winclipboardxevents.c b/xorg-server/hw/xwin/winclipboardxevents.c index 2be03b707..910e437c2 100644 --- a/xorg-server/hw/xwin/winclipboardxevents.c +++ b/xorg-server/hw/xwin/winclipboardxevents.c @@ -38,13 +38,7 @@ #include "winmsg.h" #include <unistd.h> /* - * References to external symbols - */ - -extern Bool g_fUnicodeSupport; extern Bool g_fClipboardPrimary; - -/* * Process any pending X events */ @@ -235,10 +229,6 @@ winClipboardFlushXEvents(HWND hwnd, else xiccesStyle = XStringStyle; - /* - * FIXME: Can't pass CF_UNICODETEXT on Windows 95/98/Me - */ - /* Get a pointer to the clipboard text, in desired format */ if (fUseUnicode) { /* Retrieve clipboard data */ @@ -709,10 +699,10 @@ winClipboardFlushXEvents(HWND hwnd, free(pwszUnicodeStr); if (hGlobal && pszGlobalData) GlobalUnlock(hGlobal); - if (fSetClipboardData && g_fUnicodeSupport) + if (fSetClipboardData) { SetClipboardData(CF_UNICODETEXT, NULL); - if (fSetClipboardData) SetClipboardData(CF_TEXT, NULL); + } return WIN_XEVENTS_NOTIFY; /* diff --git a/xorg-server/hw/xwin/wincreatewnd.c b/xorg-server/hw/xwin/wincreatewnd.c index 0580421ae..597f6bc4e 100644 --- a/xorg-server/hw/xwin/wincreatewnd.c +++ b/xorg-server/hw/xwin/wincreatewnd.c @@ -42,7 +42,7 @@ static Bool winGetWorkArea(RECT * prcWorkArea, winScreenInfo * pScreenInfo); static Bool - winAdjustForAutoHide (RECT *prcWorkArea, winScreenInfo *pScreenInfo); + winAdjustForAutoHide(RECT * prcWorkArea, winScreenInfo * pScreenInfo); /* * Create a full screen window @@ -60,8 +60,8 @@ winCreateBoundingWindowFullScreen(ScreenPtr pScreen) HWND *phwnd = &pScreenPriv->hwndScreen; WNDCLASSEX wc; char szTitle[256]; - char HostName[256]; - gethostname(HostName,256); + char HostName[256]; + gethostname(HostName,256); winDebug("winCreateBoundingWindowFullScreen\n"); @@ -93,11 +93,11 @@ winCreateBoundingWindowFullScreen(ScreenPtr pScreen) WINDOW_TITLE_XDMCP, g_pszQueryHost, HostName, display, (int) pScreenInfo->dwScreen); else - { + { snprintf(szTitle, sizeof(szTitle), WINDOW_TITLE, HostName, display, (int) pScreenInfo->dwScreen); - } + } /* Create the window */ *phwnd = CreateWindowExA(0, /* Extended styles */ WINDOW_CLASS, /* Class name */ @@ -154,9 +154,9 @@ winCreateBoundingWindowWindowed(ScreenPtr pScreen) DWORD dwWindowStyle; BOOL fForceShowWindow = FALSE; char szTitle[256]; - char HostName[256]; + char HostName[256]; - gethostname(HostName,256); + gethostname(HostName,256); winDebug("winCreateBoundingWindowWindowed - User w: %d h: %d\n", (int) pScreenInfo->dwUserWidth, (int) pScreenInfo->dwUserHeight); @@ -218,7 +218,7 @@ winCreateBoundingWindowWindowed(ScreenPtr pScreen) winGetWorkArea(&rcWorkArea, pScreenInfo); /* Adjust for auto-hide taskbars */ - winAdjustForAutoHide (&rcWorkArea, pScreenInfo); + winAdjustForAutoHide(&rcWorkArea, pScreenInfo); /* Did the user specify a position? */ if (pScreenInfo->fUserGavePosition) { @@ -489,33 +489,32 @@ winGetWorkArea(RECT * prcWorkArea, winScreenInfo * pScreenInfo) int iLeft, iTop; int iPrimaryNonWorkAreaWidth, iPrimaryNonWorkAreaHeight; - /* Use GetMonitorInfo to get work area for monitor */ - if (!pScreenInfo->fMultipleMonitors) - { - MONITORINFO mi; - mi.cbSize = sizeof(MONITORINFO); - if (GetMonitorInfo(pScreenInfo->hMonitor, &mi)) - { - *prcWorkArea = mi.rcWork; - - winDebug ("winGetWorkArea - Monitor %d WorkArea: %d %d %d %d\n", - pScreenInfo->iMonitor, - (int) prcWorkArea->top, (int) prcWorkArea->left, - (int) prcWorkArea->bottom, (int) prcWorkArea->right); - } - else - { - ErrorF ("winGetWorkArea - GetMonitorInfo() failed for monitor %d\n", pScreenInfo->iMonitor); - } + /* Use GetMonitorInfo to get work area for monitor */ + if (!pScreenInfo->fMultipleMonitors) { + MONITORINFO mi; - /* Bail out here if we aren't using multiple monitors */ + mi.cbSize = sizeof(MONITORINFO); + if (GetMonitorInfo(pScreenInfo->hMonitor, &mi)) { + *prcWorkArea = mi.rcWork; + + winDebug("winGetWorkArea - Monitor %d WorkArea: %d %d %d %d\n", + pScreenInfo->iMonitor, + (int) prcWorkArea->top, (int) prcWorkArea->left, + (int) prcWorkArea->bottom, (int) prcWorkArea->right); + } + else { + ErrorF("winGetWorkArea - GetMonitorInfo() failed for monitor %d\n", + pScreenInfo->iMonitor); + } + + /* Bail out here if we aren't using multiple monitors */ return TRUE; - } + } - /* SPI_GETWORKAREA only gets the work area of the primary screen. */ - SystemParametersInfo (SPI_GETWORKAREA, 0, prcWorkArea, 0); - - winDebug ("winGetWorkArea - Primary Monitor WorkArea: %d %d %d %d\n", + /* SPI_GETWORKAREA only gets the work area of the primary screen. */ + SystemParametersInfo(SPI_GETWORKAREA, 0, prcWorkArea, 0); + + winDebug("winGetWorkArea - Primary Monitor WorkArea: %d %d %d %d\n", (int) prcWorkArea->top, (int) prcWorkArea->left, (int) prcWorkArea->bottom, (int) prcWorkArea->right); @@ -564,34 +563,36 @@ winGetWorkArea(RECT * prcWorkArea, winScreenInfo * pScreenInfo) } static Bool -winTaskbarOnScreenEdge(unsigned int uEdge, winScreenInfo *pScreenInfo) +winTaskbarOnScreenEdge(unsigned int uEdge, winScreenInfo * pScreenInfo) { - APPBARDATA abd; - HWND hwndAutoHide; + APPBARDATA abd; + HWND hwndAutoHide; - ZeroMemory (&abd, sizeof (abd)); - abd.cbSize = sizeof (abd); - abd.uEdge = uEdge; + ZeroMemory(&abd, sizeof(abd)); + abd.cbSize = sizeof(abd); + abd.uEdge = uEdge; - hwndAutoHide = (HWND) SHAppBarMessage (ABM_GETAUTOHIDEBAR, &abd); - if (hwndAutoHide != NULL) - { - /* - Found an autohide taskbar on that edge, but is it on the - same monitor as the screen window? - */ - if (pScreenInfo->fMultipleMonitors || (MonitorFromWindow(hwndAutoHide, MONITOR_DEFAULTTONULL) == pScreenInfo->hMonitor)) - return TRUE; + hwndAutoHide = (HWND) SHAppBarMessage(ABM_GETAUTOHIDEBAR, &abd); + if (hwndAutoHide != NULL) { + /* + Found an autohide taskbar on that edge, but is it on the + same monitor as the screen window? + */ + if (pScreenInfo->fMultipleMonitors || + (MonitorFromWindow(hwndAutoHide, MONITOR_DEFAULTTONULL) == + pScreenInfo->hMonitor)) + return TRUE; } - return FALSE; + return FALSE; } + /* * Adjust the client area so that any auto-hide toolbars * will work correctly. */ static Bool -winAdjustForAutoHide (RECT *prcWorkArea, winScreenInfo *pScreenInfo) +winAdjustForAutoHide(RECT * prcWorkArea, winScreenInfo * pScreenInfo) { APPBARDATA abd; @@ -605,31 +606,31 @@ winAdjustForAutoHide (RECT *prcWorkArea, winScreenInfo *pScreenInfo) if (SHAppBarMessage(ABM_GETSTATE, &abd) & ABS_AUTOHIDE) winDebug("winAdjustForAutoHide - Taskbar is auto hide\n"); - /* - Despite the forgoing, we are checking for any AppBar - hiding along a monitor edge, not just the Windows TaskBar. - */ + /* + Despite the forgoing, we are checking for any AppBar + hiding along a monitor edge, not just the Windows TaskBar. + */ /* Look for a TOP auto-hide taskbar */ - if (winTaskbarOnScreenEdge(ABE_TOP, pScreenInfo)) { + if (winTaskbarOnScreenEdge(ABE_TOP, pScreenInfo)) { winDebug("winAdjustForAutoHide - Found TOP auto-hide taskbar\n"); prcWorkArea->top += 1; } /* Look for a LEFT auto-hide taskbar */ - if (winTaskbarOnScreenEdge(ABE_LEFT, pScreenInfo)) { + if (winTaskbarOnScreenEdge(ABE_LEFT, pScreenInfo)) { winDebug("winAdjustForAutoHide - Found LEFT auto-hide taskbar\n"); prcWorkArea->left += 1; } /* Look for a BOTTOM auto-hide taskbar */ - if (winTaskbarOnScreenEdge(ABE_BOTTOM, pScreenInfo)) { + if (winTaskbarOnScreenEdge(ABE_BOTTOM, pScreenInfo)) { winDebug("winAdjustForAutoHide - Found BOTTOM auto-hide taskbar\n"); prcWorkArea->bottom -= 1; } /* Look for a RIGHT auto-hide taskbar */ - if (winTaskbarOnScreenEdge(ABE_RIGHT, pScreenInfo)) { + if (winTaskbarOnScreenEdge(ABE_RIGHT, pScreenInfo)) { winDebug("winAdjustForAutoHide - Found RIGHT auto-hide taskbar\n"); prcWorkArea->right -= 1; } diff --git a/xorg-server/hw/xwin/windialogs.c b/xorg-server/hw/xwin/windialogs.c index bc6715066..7d7abcc25 100644 --- a/xorg-server/hw/xwin/windialogs.c +++ b/xorg-server/hw/xwin/windialogs.c @@ -490,7 +490,7 @@ winChangeDepthDlgProc(HWND hwndDialog, UINT message, switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: - ErrorF("winChangeDepthDlgProc - WM_COMMAND - IDOK or IDCANCEL\n"); + winDebug("winChangeDepthDlgProc - WM_COMMAND - IDOK or IDCANCEL\n"); /* * User dismissed the dialog, hide it until the @@ -502,7 +502,7 @@ winChangeDepthDlgProc(HWND hwndDialog, UINT message, break; case WM_CLOSE: - winDebug ("winChangeDepthDlgProc - WM_CLOSE\n"); + winDebug("winChangeDepthDlgProc - WM_CLOSE\n"); DestroyWindow(g_hDlgAbout); g_hDlgAbout = NULL; @@ -603,7 +603,7 @@ winAboutDlgProc(HWND hwndDialog, UINT message, WPARAM wParam, LPARAM lParam) switch (LOWORD(wParam)) { case IDOK: case IDCANCEL: - winDebug ("winAboutDlgProc - WM_COMMAND - IDOK or IDCANCEL\n"); + winDebug("winAboutDlgProc - WM_COMMAND - IDOK or IDCANCEL\n"); DestroyWindow(g_hDlgAbout); g_hDlgAbout = NULL; @@ -693,7 +693,7 @@ winAboutDlgProc(HWND hwndDialog, UINT message, WPARAM wParam, LPARAM lParam) break; case WM_CLOSE: - ErrorF("winAboutDlgProc - WM_CLOSE\n"); + winDebug("winAboutDlgProc - WM_CLOSE\n"); DestroyWindow(g_hDlgAbout); g_hDlgAbout = NULL; diff --git a/xorg-server/hw/xwin/winerror.c b/xorg-server/hw/xwin/winerror.c index 9838fa085..d5f497fda 100644 --- a/xorg-server/hw/xwin/winerror.c +++ b/xorg-server/hw/xwin/winerror.c @@ -142,7 +142,7 @@ winMessageBoxF(const char *pszError, UINT uType, ...) size = asprintf(&pszMsgBox, MESSAGEBOXF, pszErrorF, XVENDORNAME, XORG_VERSION_MAJOR, XORG_VERSION_MINOR, XORG_VERSION_PATCH, - XORG_VERSION_SNAP, + XORG_VERSION_SNAP, BUILDERADDR, BUILDERSTRING, g_pszCommandLine); if (size == -1) { diff --git a/xorg-server/hw/xwin/winkeyhook.c b/xorg-server/hw/xwin/winkeyhook.c index 124150850..fe77b2190 100644 --- a/xorg-server/hw/xwin/winkeyhook.c +++ b/xorg-server/hw/xwin/winkeyhook.c @@ -133,24 +133,6 @@ winKeyboardMessageHookLL(int iCode, WPARAM wParam, LPARAM lParam) Bool winInstallKeyboardHookLL(void) { - OSVERSIONINFO osvi = { 0 }; - - /* Get operating system version information */ - osvi.dwOSVersionInfoSize = sizeof(osvi); - GetVersionEx(&osvi); - - /* Branch on platform ID */ - switch (osvi.dwPlatformId) { - case VER_PLATFORM_WIN32_NT: - /* Low-level is supported on NT 4.0 SP3+ only */ - /* TODO: Return FALSE on NT 4.0 with no SP, SP1, or SP2 */ - break; - - case VER_PLATFORM_WIN32_WINDOWS: - /* Low-level hook is not supported on non-NT */ - return FALSE; - } - /* Install the hook only once */ if (!g_hhookKeyboardLL) g_hhookKeyboardLL = SetWindowsHookEx(WH_KEYBOARD_LL, diff --git a/xorg-server/hw/xwin/winmonitors.c b/xorg-server/hw/xwin/winmonitors.c index 31c7aeab0..ab8842a32 100644 --- a/xorg-server/hw/xwin/winmonitors.c +++ b/xorg-server/hw/xwin/winmonitors.c @@ -53,7 +53,7 @@ getMonitorInfo(HMONITOR hMonitor, HDC hdc, LPRECT rect, LPARAM _data) data->monitorOffsetY = rect->top; data->monitorHeight = rect->bottom - rect->top; data->monitorWidth = rect->right - rect->left; - data->monitorHandle = hMonitor; + data->monitorHandle = hMonitor; return FALSE; } return TRUE; diff --git a/xorg-server/hw/xwin/winmonitors.h b/xorg-server/hw/xwin/winmonitors.h index 2e83b6c8e..8201e47f4 100644 --- a/xorg-server/hw/xwin/winmonitors.h +++ b/xorg-server/hw/xwin/winmonitors.h @@ -1,3 +1,31 @@ +/* + +Copyright 1993, 1998 The Open Group +Copyright (C) Colin Harrison 2005-2008 + +Permission to use, copy, modify, distribute, and sell this software and its +documentation for any purpose is hereby granted without fee, provided that +the above copyright notice appear in all copies and that both that +copyright notice and this permission notice appear in supporting +documentation. + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, the name of The Open Group shall +not be used in advertising or otherwise to promote the sale, use or +other dealings in this Software without prior written authorization +from The Open Group. + +*/ /* data returned for monitor information */ struct GetMonitorInfoData { diff --git a/xorg-server/hw/xwin/winmultiwindowwm.c b/xorg-server/hw/xwin/winmultiwindowwm.c index c93d3efe9..31ddff8c6 100644 --- a/xorg-server/hw/xwin/winmultiwindowwm.c +++ b/xorg-server/hw/xwin/winmultiwindowwm.c @@ -354,8 +354,8 @@ InitQueue(WMMsgQueuePtr pQueue) #ifdef _DEBUG pQueue->nQueueSize = 0; - winDebug ("InitQueue - Queue Size %d %d\n", pQueue->nQueueSize, - QueueSize(pQueue)); + winDebug("InitQueue - Queue Size %d %d\n", pQueue->nQueueSize, + QueueSize(pQueue)); #endif winDebug ("InitQueue - Calling pthread_mutex_init\n"); @@ -444,23 +444,23 @@ SendXMessage(Display * pDisplay, Window iWin, Atom atmType, long nData) } /* - * Updates the name of a HWND according to its X WM_NAME property + * See if we can get the stored HWND for this window... */ - -static void -UpdateName(WMInfoPtr pWMInfo, Window iWindow) +static HWND +getHwnd(WMInfoPtr pWMInfo, Window iWindow) { - wchar_t *pszName; Atom atmType; int fmtRet; unsigned long items, remain; - HWND *retHwnd, hWnd; - XWindowAttributes attr; - - hWnd = 0; - - /* See if we can get the cached HWND for this window... */ - if (XGetWindowProperty(pWMInfo->pDisplay, iWindow, pWMInfo->atmPrivMap, 0, 1, False, XA_INTEGER, //pWMInfo->atmPrivMap, + HWND *retHwnd, hWnd = NULL; + + if (XGetWindowProperty(pWMInfo->pDisplay, + iWindow, + pWMInfo->atmPrivMap, + 0, + 1, + False, + XA_INTEGER, &atmType, &fmtRet, &items, @@ -473,8 +473,26 @@ UpdateName(WMInfoPtr pWMInfo, Window iWindow) /* Some sanity checks */ if (!hWnd) - return; + return NULL; if (!IsWindow(hWnd)) + return NULL; + + return hWnd; +} + +/* + * Updates the name of a HWND according to its X WM_NAME property + */ + +static void +UpdateName(WMInfoPtr pWMInfo, Window iWindow) +{ + wchar_t *pszName; + HWND hWnd; + XWindowAttributes attr; + + hWnd = getHwnd(pWMInfo, iWindow); + if (!hWnd) return; /* Set the Windows window name */ @@ -499,27 +517,12 @@ UpdateName(WMInfoPtr pWMInfo, Window iWindow) static void PreserveWin32Stack(WMInfoPtr pWMInfo, Window iWindow, UINT direction) { - Atom atmType; - int fmtRet; - unsigned long items, remain; - HWND hWnd, *retHwnd; + HWND hWnd; DWORD myWinProcID, winProcID; Window xWindow; WINDOWPLACEMENT wndPlace; - hWnd = NULL; - /* See if we can get the cached HWND for this window... */ - if (XGetWindowProperty(pWMInfo->pDisplay, iWindow, pWMInfo->atmPrivMap, 0, 1, False, XA_INTEGER, //pWMInfo->atmPrivMap, - &atmType, - &fmtRet, - &items, - &remain, (unsigned char **) &retHwnd) == Success) { - if (retHwnd) { - hWnd = *retHwnd; - XFree(retHwnd); - } - } - + hWnd = getHwnd(pWMInfo, iWindow); if (!hWnd) return; @@ -750,7 +753,7 @@ winMultiWindowXMsgProc(void *pArg) pthread_cleanup_push(&winMultiWindowThreadExit, NULL); - winDebug ("winMultiWindowXMsgProc - Hello\n"); + winDebug("winMultiWindowXMsgProc - Hello\n"); /* Check that argument pointer is not invalid */ if (pProcArg == NULL) { @@ -1121,7 +1124,7 @@ winInitMultiWindowWM(WMInfoPtr pWMInfo, WMProcArgPtr pProcArg) char pszDisplay[512]; int iReturn; - winDebug ("winInitMultiWindowWM - Hello\n"); + winDebug("winInitMultiWindowWM - Hello\n"); /* Check that argument pointer is not invalid */ if (pProcArg == NULL) { @@ -1431,9 +1434,9 @@ winApplyHints(Display * pDisplay, Window iWindow, HWND hWnd, HWND * zstyle) Atom type, *pAtom = NULL; int format; unsigned long hint = 0, maxmin = 0, style, nitems = 0, left = 0; - WindowPtr pWin = GetProp (hWnd, WIN_WINDOW_PROP); + WindowPtr pWin = GetProp (hWnd, WIN_WINDOW_PROP); MwmHints *mwm_hint = NULL; - WinXSizeHints SizeHints; + WinXSizeHints SizeHints; if (!hWnd) return; diff --git a/xorg-server/hw/xwin/winprocarg.c b/xorg-server/hw/xwin/winprocarg.c index c391dae7c..d246db82a 100644 --- a/xorg-server/hw/xwin/winprocarg.c +++ b/xorg-server/hw/xwin/winprocarg.c @@ -102,14 +102,15 @@ winInitializeScreenDefaults(void) int dpiY = GetDeviceCaps(hdc, LOGPIXELSY); winDebug( - "winInitializeDefaultScreens - native DPI x %d y %d\n", + "winInitializeScreenDefaults - native DPI x %d y %d\n", dpiX, dpiY); + monitorResolution = dpiY; ReleaseDC(NULL, hdc); } else { winDebug( - "winInitializeDefaultScreens - Failed to retrieve native DPI, falling back to default of %d DPI\n", + "winInitializeScreenDefaults - Failed to retrieve native DPI, falling back to default of %d DPI\n", WIN_DEFAULT_DPI); monitorResolution = WIN_DEFAULT_DPI; } diff --git a/xorg-server/hw/xwin/winscrinit.c b/xorg-server/hw/xwin/winscrinit.c index d789e563f..bfc094fcf 100644 --- a/xorg-server/hw/xwin/winscrinit.c +++ b/xorg-server/hw/xwin/winscrinit.c @@ -423,7 +423,7 @@ winFinishScreenInitFB(int index, ScreenPtr pScreen, int argc, char **argv) if (pScreen->a) { \ pScreenPriv->a = pScreen->a; \ } else { \ - ErrorF("null screen fn " #a "\n"); \ + winDebug("winScreenInit - null screen fn " #a "\n"); \ pScreenPriv->a = NULL; \ } @@ -457,7 +457,7 @@ winFinishScreenInitFB(int index, ScreenPtr pScreen, int argc, char **argv) if (pScreen->a) { \ pScreenPriv->a = pScreen->a; \ } else { \ - ErrorF("null screen fn " #a "\n"); \ + winDebug("null screen fn " #a "\n"); \ pScreenPriv->a = NULL; \ } diff --git a/xorg-server/hw/xwin/winwndproc.c b/xorg-server/hw/xwin/winwndproc.c index 77a3a76ba..ea6679c66 100644 --- a/xorg-server/hw/xwin/winwndproc.c +++ b/xorg-server/hw/xwin/winwndproc.c @@ -137,7 +137,7 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) s_pScreenPriv->hwndScreen = hwnd; - winInitNotifyIcon (s_pScreenPriv,FALSE); + winInitNotifyIcon(s_pScreenPriv,FALSE); } return 0; @@ -328,14 +328,6 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) break; - case WM_SYSCOMMAND: - if (wParam == SC_MAXIMIZE||wParam == SC_RESTORE) - { - winDebug("Posting WM_EXITSIZEMOVE message since windows does not send it when the maximised/restored button is clicked.\n"); - PostMessage(hwnd, WM_EXITSIZEMOVE, 0, 0); - } - break; - case WM_SIZE: { SCROLLINFO si; @@ -442,6 +434,15 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) } return 0; + case WM_SYSCOMMAND: + if ((wParam & 0xfff0) == SC_MAXIMIZE || + (wParam & 0xfff0) == SC_RESTORE) + { + winDebug("Posting WM_EXITSIZEMOVE message since windows does not send it when the maximised/restored button is clicked.\n"); + PostMessage(hwnd, WM_EXITSIZEMOVE, 0, 0); + } + break; + case WM_ENTERSIZEMOVE: winDebug("winWindowProc - WM_ENTERSIZEMOVE\n"); break; @@ -1161,7 +1162,7 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) #ifdef XWIN_CLIPBOARD /* Make sure the clipboard chain is ok. */ - winFixClipboardChain (0); + winFixClipboardChain(0); #endif /* Call engine specific screen activation/deactivation function */ @@ -1213,7 +1214,7 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) if (s_pScreenInfo->fMultiWindow) winDeinitMultiWindowWM(); #endif - g_fClipboardStarted=FALSE; /* This is to avoid dead-locls caused by the clipboard thread still doing some stuff */ + g_fClipboardStarted=FALSE; /* This is to avoid dead-locls caused by the clipboard thread still doing some stuff */ GiveUp(0); return 0; @@ -1232,7 +1233,7 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) #ifdef XWIN_MULTIWINDOWEXTWM case WM_MANAGE: - winDebug ("winWindowProc - WM_MANAGE\n"); + winDebug("winWindowProc - WM_MANAGE\n"); s_pScreenInfo->fAnotherWMRunning = FALSE; #ifdef XWIN_MULTIWINDOWINTWM @@ -1244,7 +1245,7 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) break; case WM_UNMANAGE: - winDebug ("winWindowProc - WM_UNMANAGE\n"); + winDebug("winWindowProc - WM_UNMANAGE\n"); s_pScreenInfo->fAnotherWMRunning = TRUE; #ifdef XWIN_MULTIWINDOWINTWM @@ -1258,7 +1259,7 @@ winWindowProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) default: if (message == s_uTaskbarRestart) { - winInitNotifyIcon (s_pScreenPriv,FALSE); + winInitNotifyIcon(s_pScreenPriv,FALSE); } break; } |