Cygwin/X

Cygwin/X Home
Cygwin Home

sources.redhat.com

Chat (IRC)
Contributors
Development
`` | Change Logs
`` | Documentation
`` | To-Do List
`` | XWin Server
Documentation
`` | Contributor's Guide
`` | Frequently Asked Questions
`` | User's Guide
Donations
Features
Mailing Lists
`` | cygwin-xfree
`` | cygwin-xfree-announce
Mirror Sites
Ported Software
Related Sites
Screenshots

## Cygwin/X - Development - XWin Server - Change Log

#### Release 6.8.1-5

Released: 2004-10-28 1600 MEST
Download source: Now available as src package via setup.exe
Changes:

- Fix crash after switching resolutions (eg. games switching to fullscreen). (Alexander Gottwald)

#### Release 6.8.1-4

Released: 2004-10-26 1400 MEST
Download source: Now available as src package via setup.exe
Changes:

- Add entries from /etc/X11/font-dirs to default fontpath. (Alexander Gottwald)
- Added "ShowCursor" entry to taskbar menu. If the pointer disappears you can click it until the pointer reappears (Alexander Gottwald)
- Make -multiplemonitors the default for -multiwindow and -mwextwm (Øyvind Harboe, Alexander Gottwald)

#### Release 6.8.1-3

Released: 2004-10-05 1800 MEST
Download source: Now available as src package via setup.exe
Changes:

- Fix bug with two-button mice and button detection. (Alexander Gottwald)
- Do not adjust workarea if native windowmanager is used. (Alexander Gottwald)

#### Release 6.8.1-2

Released: 2004-09-22 1200 MEST
Download source: Now available as src package via setup.exe
Changes:

- Fix clipboard bug with unicode applications (Kensuke Matsuzaki)
- Do not remount font directory to binmode. The font-update script should work well even on textmounts

#### Release 6.8.1-1

Released: 2004-09-17 1730 MEST
Download source: Now available as src package via setup.exe
Changes:

- Sync with upstream security release X11R6.8.1
  The X11R6.8.1 release is a security release on top of X11R6.8.0. it patches several holes in the X Pixmap library (libXpm).
- fix bug in BigFont extension which caused Xnest to crash if IPC was not available (Alexander Gottwald)
fix bug in Xnest which caused it to crash after the second server reset (Alexander Gottwald)
- Removed code which ignored the users geometry settings if -nodecoration was supplied. XWin used the whole screen instead (Alexander Gottwald)
- the font-update script will generate encodings.dir in the font dirs

#### Release 6.8.0-1

Released: 2004-09-09 2123 MEST
Download source: Now available as src package via setup.exe
Changes:

- Sync with upstream release X11R6.8
- winclipboardthread.c, winclipboardwndproc.c, winclipboardxevents.c, winwin32rootlesswndproc.c - fix copy & paste multibyte to unicode applications bug (Kensuke Matsuzaki)
- win.h, winmessages.h, winmouse.c, winmultiwindowwndproc.c, winwin32rootlesswndproc.c, winwndproc.c - Add support for mice with more than 3 buttons and 1 scroll wheel (Chris B)
- font-update is run in the postinstall script to update the list of installed fonts

#### Release 6.7-12

Released: 2004-07-21 1034 MEST
Download source: Now available as src package via setup.exe
Changes:

- xc/programs/Xserver/xdmcp.c - Bugzilla #889: Bind -from address to port number 0 instead of 177 (Alexander Gottwald)

#### Release 6.7-11

Released: 2004-07-16 1245 MEST
Download source: Now available as src package via setup.exe
Changes:

- winconfig.c - Add entry for irish layout (ie) (Alexander Gottwald)
- InitOutput.c, winerror.c, winglobals.c - rename g_fUseMsg to g_fSilentFatalError (Alexander Gottwald)
- InitOutput.c, winglobals.c, winprocarg.c - added commandline option -silent-dup-error to allow silent termination if another instance of XWin was found running (Alexander Gottwald)
- winconfig.c - Add entry for us layout. This changes not much but removes a strange error message about the unknown us layout (Alexander Gottwald)
- InitOutput.c - Check for textmode mounted /tmp and print a warning (Alexander Gottwald)
- packaging - Added symbolic link /usr/bin/X11 and /usr/lib/X11 to match FHS

#### Release 6.7-10

Released: 2004-06-14 2330 PDT
Download source: Now available as src package via setup.exe
Changes:

- windialogs.c - Fix path to locally installed change log for the About dialog box. (Harold L Hunt II)
- winpriv.c - Create win32 window if not already created. (Alexander Gottwald)
- winmultiwindowwindow.c - Export winCreateWindowWindow. (Alexander Gottwald)
- winwindow.h - Allow CYGWINDOWING_DEBUG to defined in the Makefile. (Alexander Gottwald)
- win.h - Allow CYGDEBUG to defined in the Makefile. (Alexander Gottwald)
- winmultiwindowicons.c - Load the small default icon too. (Alexander Gottwald)
- winprefs.h, winprefs.c - Takes the iconsize as parameter. (Alexander Gottwald)
- win.h, winmultiwindowicons.c (winXIconToHICON): Takes iconsize as parameter. (Alexander Gottwald)
- winglobals.c, winmultiwindowicons.c - Rename g_hiconX to g_hIconX. Added new variable g_hSmallIconX for 16x16 icon. (Alexander Gottwald)
- winwindow.h, winmultiwindowicons.c - Inits the global g_hIconX handles. (Alexander Gottwald)
- winwindow.h, winmultiwindowicons.c - Free the icon without messing with the global icon handle. (Alexander Gottwald)
- winmultiwindowicons.c - Generate a custom icon from window settings or set them to globals. (Alexander Gottwald)
- winmultiwindowshape.c, winmultiwindowwindow.c, winwin32rootless.c, winwin32rootlesswindow.c, winwin32rootlesswndproc.c - Remove declaration of g_hiconX. (Alexander Gottwald)
- winmultiwindowwindow.c, winwin32rootless.c - Use winSelectIcons to get the window icons. Set the small icon too. (Alexander Gottwald)
- winmultiwindowwindow.c, winmultiwindowicons.c, winprefs.c, winwin32rootlesswindow.c, winwin32rootless.c - Use winDestroyIcon to free the icon without destroying the global icon. (Alexander Gottwald)
- windialogs.c, winmultiwindowwndproc.c, winwndproc.c - Check if g_fSoftwareCursor is set before calling ShowCursor. (Alexander Gottwald, Dan Wilks - Intuit)

#### Release 6.7-9

Released: 2004-05-13 1300 EDT
Download source: Now available as src package via setup.exe
Changes:

- winclipboard.h - Add extern prototypes for winDebug, winErrorFVerb copied from winmsg.h. (Dan Wilks - Intuit)
- winclipboardinit.c/winFixClipboardChain - Post rather than send the reinit message to the clipboard window. Sending the message caused, or possibly just exacerbated an existing, race condition that would cause the X server to hang when coming back from a remote desktop session. (Dan Wilks - Intuit)
- winclipboardwndproc.c/winProcessXEventsTimeout - Switch to new logging api's. (Dan Wilks - Intuit)
- winclipboardwndproc.c/winClipboardWindowProc - Switch to new logging api's. Add some additional debug logging. Make best effort to prevent our window appearing twice in the clipboard chain. Also detect loops when they occur and try to behave in a reasonable way. (Dan Wilks - Intuit)

#### Release 6.7-8

Released: 2004-05-04 1730 EDT
Download source: Now available as src package via setup.exe
Changes:

- windialogs.c - Let the number-of-client display show at least 0 clients. (Alexander Gottwald)
- winmsg.h, winmsg.c - New function winW32Error which prints the error string with FormatMessage. (Alexander Gottwald)
- wincursor.c - Fix severe GDI leak. GetIconInfo allocated new bitmaps which were never deleted. (Alexander Gottwald)
- Xserver/GL/windows/indirect.c - Rename winErrorMessage to glWinErrorMessage print GetLastError() if FormatMessage fails. This will at least give some information if the 1024 byte buffer is to small for some messages. (Alexander Gottwald)
- wincursor.c - Always free the bitmaps from GetIconInfo. (Earle F. Philhower III)
- wincursor.c - Disable extensive cursor debug-logging. If a problem arises it can be easily switched on again. (Alexander Gottwald)
- wincursor.c, winmsg.c, winmsg.h - simplify use of winW32Error function. (Alexander Gottwald)
- winshadgdi.c - Make shadow GDI work with wine. (Alexander Gottwald)
- winshadgdi.c - Fix wrong color depths for wine. (Alexander Gottwald)
- winshadgdi.c - Remove warning about weired biHeight signedness. This has never been a problem in the last two years. (Alexander Gottwald)
- General - Replace ErrorF with winDebug in all CYGDEBUG sections. (Alexander Gottwald)
- winmessages.h, winwndproc.c, winmultiwindowwndproc.c - Move window to top if WM_WINDOWPOSCHANGING without NOZORDER is received. Print message information WindowProc functions if CYGDEBUG is enabled. (Alexander Gottwald)
- winmultiwindowwm.c - Silence warning about winDebug. winmsg.h and win.h can not be included because of conflicting symbol names. (Alexander Gottwald)
- winconfig.c - Fix Japanese jp106 layout. Reported by takuma and Munehiro (haro) Matsuda. (Alexander Gottwald)
- winclipboardwndproc.c/winClipboardWindowProc - Don't try to set the "next window" in the clipboard chain to ourself. Fixes another hang when using -clipboard. (Dan Wilks - Intuit)

#### Release 6.7-7

Released: 2004-04-27 1100 EDT
Download source: Now available as src package via setup.exe
Changes:

- winmultiwindowwm.c - Fix typo in function names (Mutli->Multi). (Earle F. Philhower III)
- wincursor.c - Add color cursor support for hicolor and truecolor modes. (Earle F. Philhower III)
- InitOutput.c, winblock.c, wincmap.c, wincreatewnd.c, winrandr.c, winshadddnl.c - Use winDebug and winErrorFVerb instead of ErrorF to respect -loglevel. (Alexander Gottwald)
- wincursor.c - Added 32bpp (alpha+RGB) cursor support in true color modes. (Earle F. Philhower III)
- win.h - Include winmsg.h to silence warnings about undeclared functions. (Harold L Hunt II - CodeWeavers)
- wincursor.c - winReallySetCursor was empty and not needed. (Harold L Hunt II)
- winclipboardwndproc.c - Silence repeated messages from the clipboard subsystem. (Harold L Hunt II - CodeWeavers, Alexander Gottwald)
- InitOutput.c - Set the logfile verbosity too. This silences a lot of debug messages in the logfile. (Alexander Gottwald)
- wincursor.c - CreateIconIndirect sometimes creates an Icon instead of an Cursor. This breaks the hotspot and makes the cursor unusable. Discard the garbled cursor and revert to simple black and white cursor. (Alexander Gottwald)
- wincursor.c - Some code clean up and documentation. (Alexander Gottwald)
- wincursor.c - Fix color cursor on non-XP systems (use compatible bitmap, not DIB, for cursor creation). (Earle F. Philhower III)
- wincursor.c - If CreateIconIndirect creates an icon instead of a cursor, try it again with icon mask and color bitmap. (Alexander Gottwald)

#### Release 6.7-6

Released: 2004-04-24 1200 EDT
Download source: Now available as src package via setup.exe
Changes:

- winmultiwindowwm.c - Fix typo in error message. (Earle F. Philhower III)
- winwndproc.c, wincursor.c - Don't set the HW cursor unless the mouse is in client area. (Earle F. Philhower III)

#### Release 6.7-5

Released: 2004-04-23 1500 EDT
Download source: Now available as src package via setup.exe
Changes:

- winwin32rootless.c, winprefs.c, winmultiwindowwndproc.c, winmultiwindowwindow.c - LoadImage() g_hiconX because it is DestroyIcon()d cannot use LoadIcon(). Fix off-by-one class naming problem. More error checking on icon and menu creation. (Earle F. Philhower III)
- winwin32rootless.c, winwin32rootlesswindow.c - Fix debug message. Fix GDI leak because of off-by-one class naming problem and DeleteObject instead of DestroyIcon. (Kensuke Matsuzaki)
- winmultiwindowicons.c - Apply Kensuke's GDI leak fix [DeleteObject(icon)->DestroyIcon(icon)]. (Earle F. Philhower III)
- XWinrc.man - Added TRAYICON, SILENTEXIT, icon file reading info, and a small example. Still needs work but has all keywords present. (Earle F. Philhower III)
- InitOutput.c, winglobals.c, winprocarg.c - Make --help and --version available. (Alexander Gottwald)
- winmultiwindowwindow.c - Explicitly reset the system menu to WS_POPUP when creating. (Earle F. Philhower III)
- General (xorg-x11-etc) - Bugzilla #533: fix slash/questionmark key for abnt2 keyboard. (Alexander Gottwald)
- winglobals.c - Set default loglevel to 2. (Alexander Gottwald)
- win.h, wincursor.c - Enable hardware (== Windows) cursor for all display modes. (Alexander Gottwald)
- winglobals.c, winprocarg.c, winscrinit.c - Add commandline option to enable software cursor. Use winDebug and winErrorFVerb instead of ErrorF to set explicit loglevels. (Alexander Gottwald)
- winvalargs.c, winengine.c - Use winDebug and winErrorFVerb instead of ErrorF to set explicit loglevels. (Alexander Gottwald)
- Xserver/GL/windows[Imakefile, glwindows.h, indirect.c, wincursor.c] - Removed code for hardware cursor since it's now in hw/xwin. (Alexander Gottwald)
- InitOutput.c, XWin.man - Document the -swcursor switch. (Alexander Gottwald)
- Imakefile, win.h, wincursor.c, winmultiwindowwndproc.c, winpriv.c, winscrinit.c, winwin32rootlesswndproc.c, winwin32rootlesscursor.c - MWExtWM uses common hardware(windows) cursor code too, and winwin32rootlesscursor.c is removed. Clean up unused variables. Modify comment(winMWExtWM* -> win*). Fix the problem that cursor doesn't change when cursor move in a window. (Kensuke Matsuzaki)
- winvalargs.c - Allow screen combinations with 'XWin -query host -screen 0 -screen 1 -multiwindow'. This gives an Xdmcp session and a second screen where I can display single windows. (Alexander Gottwald)
- XWin.man - Fix typo. (Rodrigo Medina)
- XWin.man, XWinrc.man - Fix spacing after sentences (use standard two-spaces after period). (Harold L Hunt II)
- win.h - Add prototype for winFixClipboardChain. (Dan Wilks)
- winclipboard.h - Add definition WM_WM_REINIT a private windows message that the clipboard window uses to reinitialize the clipboard viewer chain. (Dan Wilks)
- winwndproc.c/winWindowProc - Call winFixClipboardChain on application activation/deactivation to ensure that XWin is still in the clipboard chain. (Dan Wilks)
- winclipboardinit.c - Added references to g_fClipboard and g_hwndClipboard for winFixClipboardChain to use. (winFixClipboardChain): New function. Ensures that XWin is still in the Windows clipboard chain if we're using the internal clipboard. (Dan Wilks)
- winclipboardwndproc.c/winClipboardWindowProc - Process WM_WM_REINIT and force ourselves back into the clipboard chain. (Dan Wilks)

#### Release 6.7-4

Released: 2004-04-13 2100 EDT
Download source: Now available as src package via setup.exe
Changes:

- winmultiwindowwindow.c, winmultiwindowwndproc.c, winwin32rootless.c, winwin32rootlesswndproc.c - Fix MWExtWM resource leak. (Kensuke Matsuzaki)
- XWin.man - Add missing documentation for command-line parameters. (Rodrigo Medina)
- XWin.man - Rework some parts of the document, remove outdated information, update other outdated information. (Harold L Hunt II - CodeWeavers)
- XWinrc.man - New man page for .XWinrc file. (Rodrigo Medina)
- winengine.c - The fix reportedly in 6.7-3 for ShadowGDI being forced when not required was not actually in that release; include that fix in this release. (Harold L Hunt II - CodeWeavers)
- winshadgdi.c/winActivateAppShadowGDI - Turn back on the manually minimizing and restoring of our window when using the ShadowGDI engine in fullscreen mode. We perform the restoring or minimizing manually for ShadowGDI in fullscreen modes so that this engine will perform just like ShadowDD and ShadowDDNL in fullscreen mode; if we do not do this then our fullscreen window will appear in the z-order when it is deactivated and it can be uncovered by resizing or minimizing another window that is on top of it, which is not how the DirectDraw engines work. (Harold L Hunt II - CodeWeavers)
- InitOutput.c - Adjust link to FAQ. (Alexander Gottwald)
- winkeybd.c - Fix rare segfault caused by uninitialized event queue. Happened if FatalError Messagebox appeared because of missing font "fixed". (Alexander Gottwald)
- InitOutput.c - Fix segfault if LogInit fails. (Alexander Gottwald)
- winmsg.c, winmsg.h - New function winDebug which logs messages with verbosity level 3. (Alexander Gottwald)

#### Release 6.7-3

Released: 2004-04-10 1000 EDT
Download source: Now available as src package via setup.exe
Changes:

- winmultiwindowwindow.c - Reapply the path that fix multi-window mode crashes when there were multiple instances of XWin.exe. (Kensuke Matsuzaki)
- General - Enable build of Kensuke Matsuzaki's newer multi-window mode that works with an external window manager (-mwextwm). This newer multi-window mode uses the miext/rootless extension and requires Kensuke's xwinwm window manager, which will be released later as a Cygwin package. If you have to ask how to run this then you should wait until it is explained better; please do not ask questions about this in the mailing list for now.
- MultiwindowExtWM Mode (-mwextwm) - Fix window reordering. Remove winMWExtWMReorderWindows. (Kensuke Matsuzaki)
- General - Make most functions static that can be static. Remove declarations for functions used in only one place from win.h and put them in that single file. (Harold L Hunt II - CodeWeavers)
- wincreatewnd.c/winCreateBoundingWindowFullScreen - Stop using WS_EX_TOPMOST for fullscreen windows. (Harold L Hunt II - CodeWeavers)
- winshadgdi.c/winActivateAppShadowGDI - Stop manually minimizing and restoring our window when using the ShadowGDI engine in fullscreen mode. (Harold L Hunt II - CodeWeavers)
- InitOutput.c - Document -logfile, -logverbose and -[no]keyhook [Bug 437], and only document -xkb* parameter if XKB is defined. (Alexander Gottwald)
- winshaddd.c - Fix a few DDNL's that should be DD's. (Harold L Hunt II - CodeWeavers)
- winengine.c/winSetEngine - Oops, fix ShadowGDI being forced when it doesn't need to be. (Harold L Hunt II)

#### Release 6.7-2

Released: 2004-04-08 2100 EDT
Download source: Now available as src package via setup.exe
Changes:

- General - Fix truetype fonts. (Lev Bishop)

#### Release 6.7-1

Released: 2004-04-07 0200 EDT
Download source: Now available as src package via setup.exe
Changes:

- General - First release based on X.Org monolithic tree, version 6.7. See X.Org release notes for more information.

#### Release 4.3.0-67

Released: 2004-04-03 2230 EST
Download source: Now available as src package via setup.exe
Changes:

- winclipboardxevents.c/winClipboardFlushXEvents/SelectionRequest - Change the number of elements passed to the first call to XChangeProperty from 32 * 4 to 4 since we are the count of array elements, not the byte count of the total array. (Lev Bishop)
- winerror.c/winMessageBoxF - Correct used argument for va_start. (Alexander Gottwald)
- winkeyhook.c, etc. - Add a low-level keyboard hook for catching special key combinations like Alt+Tab and passing them to the X Server instead of letting Windows handle them. Add a "-keyhook" parameter to enable this experimental feature. (Harold L Hunt II - CodeWeavers, Takuma Murakami)
- windialogs.c - Display dialog boxes in the center of the Windows desktop if Cygwin/X is minimized. The problem was reported by Rodrigo Medina. (Takuma Murakami)

#### Release 4.3.0-66

Released: 2004-03-30 1315 EST
Download source: Now available as src package via setup.exe
Changes:

- winclipboardxevents.c/winClipboardFlushXEvents/SelectionRequest - Change the 'format' value for the first call to XChangeProperty from 8 to 32 since we are passing a data array of Atoms, which are 32 bits long. (Lev Bishop)
- windialogs.c - Check for hand cursor not present (pre-desktop update W95/NT). (Earle F. Philhower III)
- winmultiwindowwndproc.c - Don't set focus to windows with overrideRedirect flag is set. (Takuma Murakami)
- winlayer.c - Remove dead file. (Harold L Hunt II - CodeWeavers)
- Imakefile, win.h, winrandr.c, winscrinit.c - Put in place a framework for supporting RandR. RRSetScreenConfig was added to Xserver/randr/randr.c to allow setting the current resolution from within the X Server (previously it was only something that X apps could do). There is a little bit of work to be done before this will work, but it compiles fine now and LAYER has been removed since it is no longer needed for RandR. (Harold L Hunt II - CodeWeavers)
- winclipboardwrappers.c - Clear ownership flag of the other monitored selection if an X application is taking ownership of a selection, which might help to prevent clipboard related pauses. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-65

Released: 2004-03-29 1500 EST
Download source: Now available as src package via setup.exe
Changes:

- _usr_X11R6_lib_X11_system.XWinrc, win.h, windialogs.c, winprefs.h, winprefslex.l, winprefsyacc.y - Introduce SilentExit feature that is enabled by .XWinrc file. Show the number of connected clients in the exit confirmation dialog. (Takuma Murakami)
- InitOutput.c, winglobals.c - Try to be cleaner about closing down the clipboard. (Harold L Hunt II - CodeWeavers)
- XWin.rc, windialogs.c, winresource.h, wintrayicon.c - Fix problem with tray menu in non-multi-window modes, add framework for Takuma to display the number of connected clients on shutdown. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-64

Released: 2004-03-28 1300 EST
Download source: Now available as src package via setup.exe
Changes:

- windialogs.c, XWin.rc - Convert "About..." hyperlink buttons to show as hyperlinks. (Earle F. Philhower III)
- wintrayicon.c - Don't remove the tray icon menu separator when not in multi-window mode since the "About..." entry is still above the separator. (Harold L Hunt II - CodeWeavers)
- cygwin.cf - Enable the X-Resource extension, reported missing by Nicholas Wourms. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-63

Released: 2004-03-26 1730 EST
Download source: Now available as src package via setup.exe
Changes:

- winclipboardwrappers.c - Be careful to note that neither PRIMARY nor CLIPBOARD is owned by the clipboard integration manager when text is selected in X then unselected. This fixes at least part of the problem defined by Lev Bishop but needs to be tested. (Harold L Hunt II - CodeWeavers)
- winmultiwindowicons.c - Use BitsPerPixel() to calculate pixel stride, handle non-packed modes. (Earle F. Philhower III)
- InitOutput.c, winclipboardthread.c - Properly destroy the clipboard window. Unfortunately, calling XCloseDisplay hangs for some unknown reason, so we have to leave the display open; I suspect this has something to do with our IOErrorHandler. (Harold L Hunt II - CodeWeavers)
- XWin.rc - Move the About... entry in the tray icon menu up above the separator and change the title of the About box to "About Cygwin/X". (Jack Tanner)
- InitOutput.c - Try to do a better job of removing the tray icon. It still doesn't seem to be perfect yet. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-62

Released: 2004-03-25 2230 EST
Download source: Now available as src package via setup.exe
Changes:

- X-boxed.ico - Use Michael Bax's boxed X icon.
- win.h, winmultiwindowwindow.c, winmultiwindowwm.c, winmultiwindowwndproc.c, winprefs.c - Remove fAlwaysOnTop and PreserveWin32Stack() instead of reinstating winReorderWindowsMultiWindow(), which now inhibits reentries to avoid infinite restacking. Call winReorderWindowsMultiWindow() in appropriate places to keep consistent window Z order even if always-on-top windows are mixed. (Earle F. Philhower III and Takuma Murakami)
- winwindow.h, winmultiwindowwndproc.c, winmultiwindowwm.c, winmultiwindowwindow.c - Always-on-top mods: fix popup menus over AOT windows, AOTs not disappearing, normal windows appearing over AOTs. (Earle F. Philhower III)
- windialogs.c - Exit dialog gets top of Z order, otherwise can be hidden by X apps. (Earle F. Philhower III)
- winmultiwindowwindow.c - Make winRestackWindowMultiWindow empty (except calling the wrapped function). (Takuma Murakami)
- win.h, winblock.c, winglobals.c, winmultiwindowwindow.c, winmultiwindowwndproc.c, winscrinit.c, winshadgdi.c, winwakeup.c - Remove fRestacking and fWindowOrderChanged cache variables and winReorderWindowsMultiWindow function from multiwindow mode. This function was called around 100 times per second. Now the ordering task is done in winTopLevelWindowProc/WM_ACTIVATE handler in event driven manner. Stop propagating WM_ACTIVATEAPP messages to the root window. Simplify winRedrawAllProcShadowGDI. (Takuma Murakami)
- XWin.rc, win.h, winblock.c, windialogs.c, winglobals.c, winmultiwindowwindow.c, winresource.h, winshaddd.c, winshadddnl.c, winshadgdi.c, winwakeup.c, winwndproc.c - Add an About dialog box to the tray icon menu, complete with links to our local change log (/usr/X11R6/share/doc/XFree86-xserv/changelog.html) and documentation on our website. (Harold L Hunt II - CodeWeavers)
- winclipboardwndproc.c - Drop the clipboard failure timeout from 2 seconds to 1 second. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-61

Released: 2004-03-25 0055 EST
Download source: Now available as src package via setup.exe
Changes:

- winclipboardwndproc.c, winclipboardxevents.c - Attempt to fix clipboard deadlock that was causing hangs. The nature of the fix was to stop calling XPeekIfEvent since it will block until the specified type of event is seen. Instead, we call XSync to flush output events and wait for them to be processed, then we do our own little loop with a call to select() using a timeout of 3 seconds from when we started (the timeout is adjusted after each call to select()). This should alleviate problems with XPeekIfEvent not returning. Finally, since we can detect whether the SelectionNotify event has arrived now, I added code to paste NULL to the Win32 clipboard if the X11 application never returns any useful clipboard data; this should prevent Win32 applications from freezing when there are problems pasting from X11 to Win32. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-60

Released: 2004-03-23 1945 EST
Download source: Now available as src package via setup.exe
Changes:

- winmultiwindowicons.c - Use PixmapBytePad to calculate the length of a line in the icon that miGetImage will return. Our own calculation was not allocating enough memory per line and miGetImage was walking off the end of that memory when Windows is running in 24 bit color and using multi-window mode. (Fabrizio Gennari)
- XWin.rc, winresource.h, wintrayicon.c, winwndproc.c - Change Show/Hide Root Window menu items to a single item with a check box. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-59

Released: 2004-03-18 2345 EST
Download source: Now available as src package via setup.exe
Changes:

- winmultiwindowclass.c,winmultiwindowclass.h,winmultiwindowwindow.c - Fix window cascading to not affect popups or menus. (Earle F. Philhower III)

#### Release 4.3.0-58

Released: 2004-03-18 1315 EST
Download source: Now available as src package via setup.exe
Changes:

- winconfig.c - Reset variable 's' after each step. Fixes bug where the argument to -xkblayout applied also to -xkbvariant and -xkboptions. (Alexander Gottwald)
- winshadgdi.c - Fix for the Show Root Window 100% CPU bug. Use lParam in winRedrawAllProcShadowGDI as indicator which window initiated the call since EnumerateThreadWindows is called from WM_PAINT handler too and invalidates the fresh painted window right after painting it. (Alexander Gottwald)
- X.ico - Include Jehan Bing's icon_test9 version, which includes 24 bit as well as 32 bit icons. It is hoped that the 24 bit icons will be used by platforms that do not support the 8 bit alpha channel in the 32 bit icon. (Jehan Bing)

#### Release 4.3.0-57

Released: 2004-03-17 0830 EST
Download source: Now available as src package via setup.exe
Changes:

- winmultiwindowwindow.c - Cascade Win32 windows when -geometry is not specified, using CW_USEDEFAULT, instead of always creating at X(0,0). (Earle F. Philhower III)
- General - Change build script to include this changelog in /usr/X11R6/share/doc/XFree86-xserv/changelog.html. (Harold L Hunt II - CodeWeavers)
- General - Change build script to sort file lists and trim lines that just have a directory but no file; these lists are used for generating the README files. (Harold L Hunt II - CodeWeavers)
- General - Add build-xserv command that pre-processes cygwin.cf and sets the current release number for XWin.exe. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-56

Released: 2004-03-15 2050 EST
Download source: Now available as src package via setup.exe
Changes:

- General - Change build system files to stop linking against cygipc and instead use SHM support that is now built into cygwin1.dl. Note that you will now use 'cygserver' to setup cygserver as a Windows Service instead of ipc-daemon2 to enable MIT-SHM support for Cygwin/X. Please see the cygserver documentation (google for it if you have to) for more information. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-55

Released: 2004-03-14 0230 EST
Download source: Now available as src package via setup.exe
Changes:

- General - All Cygwin/X packages are now built with a build script that also packages the source code into about 8 source packages. You can now download the source for XFree86-xserv via Cygwin's setup.exe. More instructions on how to compile this source will follow later. (Harold L Hunt II)
- Preferences (Earle F. Philhower III)
  - Added "TRAYICON" parsing to .xwinrc
  - Added "<file>.dll,nnn" icon extraction to take icons from compiled DLL or EXEs
  - Added ",nnn" icon extraction to take icons compiled into XWin.exe
  - Fixed ICONDIRECTORY no longer appended to icon path if it is fully qualified
- Icons - Jehan Bing's almost latest X icon (1st icon in XWin.exe) with alpha channel support. I just realized that I did not get Jehan's x_test8.ico in this release, so I will have to make another release soon. (Jehan Bing)
- Icons - Benjamin Riefenstahl's boxed X icon (2nd icon in XWin.exe). (Benjamin Riefenstahl)

#### Release 4.3.0-54

Released: 2004-03-10 1500 EST
Download source: hw/xwin files not changed since 4.3.0-53
Changes:

- X.ico - Add formats with an alpha channel to smooth the edges of the icon on systems that support alpha channels. This drastically improves the appearance of the icon. (Jehan Bing)

#### Release 4.3.0-53

Released: 2004-03-10 1135 EST
Download source: no longer distributed
Changes:

- winconfig.c - Fix auto-repeat when -kb is passed to XWin.exe. (Harold L Hunt II)

#### Release 4.3.0-52

Released: 2004-03-09 1830 EST
Download source: no longer distributed
Changes:

- winglobals.c, winprefs.c, winshadgdi.c - Replace all calls to EnumWindows by EnumThreadWindows since we need to manipulate only Cygwin/X windows, which are in the same thread. (Takuma Murakami)
- winconfig.c, winconfig.h, winprocarg.c - Display warning message if user uses -xf86config or -keyboard parameters when they are unsupported. (Harold L Hunt II)

#### Release 4.3.0-51

Released: 2004-03-08 2005 EST
Download source: no longer distributed
Changes:

- win.h, winglobals.c, winmultiwindowwindow.c, winshadgdi.c - Restrict multiwindow redrawing region to the intersection between the smallest bounding rectangle of damaged areas and each Windows window. Compare process IDs instead of class names to determine whether a window is a Cygwin/X window or not. (Takuma Murakami)
- InitOutput.c - Print a log message that XF86Config is unsupported with pointer to documentation (FAQ). (Alexander Gottwald)
- winconfig.c - Print the keyboardlayout name supplied from Windows if it was not found. This makes it easier to add those layouts. (Alexander Gottwald)

#### Release 4.3.0-50

Released: 2004-03-03 0815 EST
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c - Fix window adjustment on multiple monitors. (Takuma Murakami)

#### Release 4.3.0-49

Released: 2004-03-02 2230 EST
Download source: no longer distributed
Changes:

- winclipboardwndproc.c, winclipboardwrappers.c, winclipboardxevents.c - Check if clipboard is already open before calling OpenClipboard; if it is open and we own it, then call CloseClipboard in hopes of fixing some reported deadlock situations. (Harold L Hunt II - CodeWeavers)
- InitOutput.c - Add check for multiple instances of XWin trying to run on the same display number. Check for uniqueness among all terminal services sessions. (Takuma Murakami, Harold L Hunt II)
- winvalargs.c - Validate command-line argument combinations; fail when invalid combinations are found, such as "XWin -query foo_host -multiwindow". (Harold L Hunt II - CodeWeavers)
- winerror.c/winMessageBoxF - Add a function that works like printf for Win32 message boxes. (Harold L Hunt II - CodeWeavers)
- winprocarg.c/winLogVersionInfo - Print version, vendor, and mailing list email address in the log file. (Harold L Hunt II - CodeWeavers)
- winprocarg.c/winLogCommandLine - Concatenate the command line into a single string with line breaks at 60 characters. Print the command line in the log file and save it for winMessageBoxF to use during FatalError and ddxUseMsg calls. (Harold L Hunt II - CodeWeavers)
- winerror.c - Make FatalError popup a message box telling the user that a fatal error occurred, where the log file is, what version they are running, what the command line used to start XWin was, etc. (Harold L Hunt II - CodeWeavers)
- InitOutput.c/ddxUseMsg - Popup a message box telling the user that the help information was save to the log file, tell them where the log file is, what the command line used to start XWin was (in case they don't realize they typed -help or an invalid parameter name), etc. (Harold L Hunt II - CodeWeavers)
- Xserver/os/utils.c, xdmcp.c - Replace several calls to ErrorF and exit(1) with calls to FatalError; this allows us to present the user with a popup message box, whereas the exit(1) call prevented us from doing this. (Harold L Hunt II - CodeWeavers)
- InitOutput.c/ddxUseMsg - Document Alexander's new -xkb* parameters. (Harold L Hunt II - CodeWeavers)
- config/cf/cygwin.cf - Specify our own vendor string, version number, and contact information. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-48

Released: 2004-02-28 1445 EST
Download source: no longer distributed
Changes:

- winprefs* - Rename the WINMULTIWINDOWPREFS structure to WINPREFS, since it is used even when MultiWindow mode is disabled. (Harold L Hunt II - CodeWeavers)
- winmultiwindowclass.c, winmultiwindowclass.h, winmultiwindowicons.c - Identify these files for renaming since they are not dependent upon MultiWindow mode being enabled. Do not perform the actual rename; instead, write this message in hopes that someone else performs the rename in CVS in a manner that preserves history. (Harold L Hunt II - CodeWeavers)
- win.h, winclipboard.h, winwindow.h - Remove WIN_*_SUPPORT flags. (Harold L Hunt II - CodeWeavers)
- xc/config/cf/cygwin.cf - Remove the inclusion of xfree86.cf; including xfree86.cf forced us to have several lines of code that prevented drivers from being compiled, and forced us to define values for certain #defines so that they would not be overridden. Removing xfree86.cf and restructuring the file led to a decrease in size of about 30%. (Harold L Hunt II - CodeWeavers)
- xc/config/cf/cygwin.cf - Add the build flags removed from win.h in the form BuildXWinFoo. Add defines for the various build options, such as XWIN_FOO, which are added to the defines passed to the compiler when building the server. This allows us to remove the build flags from the hw/xwin headers and it also allows us to refer to the BuildXWin* flags in Xserver/Imakefile, which means that we should no longer have to update that file by hand when enabling and disabling certain features. (Harold L Hunt II - CodeWeavers)
- General - The above changes required extensive rewriting of cygwin.cf, which means that I may have accidentally broken or disabled something that was working previously. Please verify that things work as they should. Note that removing xfree86.cf causes 'xdpyinfo' to report our vendor string as "The X.Org Group" and our vendor release number as "6600"; this is different from the previous vendor of XFree86 with version 4.3.0.1 or some such. (Harold L Hunt II - CodeWeavers)

#### Release 4.3.0-47

Released: 2004-02-25 0715 EST
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c, winmultiwindowwndproc.c - For the topmost Windows window, explicitly raise its X counterpart to the top in Z order to keep correct stacking when there is a minimized window which formerly obscured it. (Takuma Murakami)

#### Release 4.3.0-46

Released: 2004-02-22 1430 EST
Download source: hw/xwin files not changed since 4.3.0-45
Changes:

- 'make clean && make' in Xserver/hw/xwin. The 4.3.0-45 build was busted for some reason. This rebuild fixes some segfaults caused by certain apps, such as xeyes.

#### Release 4.3.0-45

Released: 2004-02-21 1430 EST
Download source: no longer distributed
Changes:

- win.h, winmultiwindowwindow.c, winmultiwindowwndproc.c, winscrinit.c, winwindow.h - Improve move, resize, minimize, maximize, and restore operations on windows in multiwindow mode. Reorganize message/event flow, add new scheme to propagate window changes between Windows and X layers, eliminate bunch of conditional branches and cache variables. A couple of bugs should be fixed. (Takuma Murakami)
- winmouse.c - Properly clear the internal mouse button map when the mouse device is closed. (Takuma Murakami)
- winmultiwindowwndproc.c, winprefs.c, winprefs.h, winwndproc.c - Stop passing customized menus to DefWindowProc. Although it does not cause visible problems so far, it should be inhibited. Apply a mask, which is described in MSDN, for wParam in winTopLevelWindowProc/WM_SYSCOMMAND handler. (Takuma Murakami)
- winconfig.c, winconfig.h, winprocarg.c - Add some xkb settings (rules, model, layout, variant, options) to the commandline options and parse them even with configfile support turned off. (Alexander Gottwald)
- xc/lib/font/fontfile/dirfile.c, encparse.c, fontfile.c - Some more font path checks. (David Dawes)
- winmultiwindowwm.c - Make MultiWindow Window Manager detectable from other wm's as well as allowing it to detect other wm's. (Takuma Murakami)
- xc/lib/font/fontfile/dirfile.c - Fix an exploitable buffer overflow. (Greg MacManus (iDEFENSE Labs))

#### Release 4.3.0-44

Released: 2004-01-28 2000 EST
Download source: no longer distributed
Changes:

- xc/programs/Xserver/os/access.c - Prevent 0.0.0.0 addresses from being sent to the other end of the wire when using Xdmcp. Suggested in the \devel at xfree86 dot org\ mailing list and discussed by many people in that and other forums. Should fix problems when using unconfigured network interfaces and attempting to use '-query' to Xdmcp into a remote machine; this was happening to a lot of users with wireless and wired network cards in laptop computers of which one or the other was usually configured but not both.

#### Release 4.3.0-43

Released: 2004-01-27 0045 EST
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c, winmultiwindowwndproc.c, winwindow.h - Fix for Always On Top handling. (Earle F Philhower III)
- windialogs.c - Center dialog boxes in the desktop window. (Earle F Philhower III)

#### Release 4.3.0-42

Released: 2004-01-16 1500 EST
Download source: no longer distributed
Changes:

- InitOutput.c - Only wait for the clipboard thread to exit if the clipboard client has been started. (Harold L Hunt II)
- winclipboardwrappers.c/winProcQueryTree, winProcEstablishConnection - Unwrap base function and return if clipboard is not enabled. (Harold L Hunt II)
- winclipboardxevents.c/winClipboardFlushXEvents - Call SetClipboardData when aborting; those should allow Win32 apps that are holding the clipboard open to fail gracefully and close the clipboard. (Harold L Hunt II)
- winglobals.c - Remove duplicate declaration of g_fClipboardStarted. (Takuma Murakami)
- winglobals.c - winInitializeGlobals - Reinitialize all clipboard globals. (Harold L Hunt II)
- winmultiwindowwm.c - Change all error messages that occur before a call to pthread_exit to make it clear that the window manager is exiting. (Harold L Hunt II)

#### Release 4.3.0-41

Released: 2004-01-15 0100 EST
Download source: no longer distributed
Changes:

- Clipboard - Try to check all allocated pointers for NULL before dereferencing and try to provide clean failures with error messages. (Harold L Hunt II)
- General - Allow XF86Config support to be turned on or off via the WIN_XF86CONFIG_SUPPORT #define in win.h. This is needed for the xserver tree on freedesktop.org (fd.o) since it does not have the necessary files from the XFree86 DDX (hw/xfree86). (Harold L Hunt II)
- resource.h - Rename resource.h to winresource.h to fix a problem with a header of the same name in the xserver tree on fd.o. (Harold L Hunt II)
- win.h - Wrap #include "layer.h" with #if WIN_LAYER_SUPPORT so that the header will not be included when layer is not being built. (Harold L Hunt II)
- win.h - Remove XWDFile.h, pXWDCmap, and pXWDHeader; these have not been used in ages, if ever. (Harold L Hunt II)
- General - Change all includes for Xlib headers from #include "foo.h" or #include <foo.h> to #include "X11/foo.h" for consistency and to make the build work in the xserver tree on fd.o. (Harold L Hunt II)
- General - Grab the rest of Alexander Gottwald's fixes for build warnings due to malformed prototypes. Add a few more fixes to silence additional warnings along the same lines.
- General - Protect some more XKB stuff with #ifdef XKB. Needed for the build in the xserver tree on fd.o. (Harold L Hunt II)

#### Release 4.3.0-40

Released: 2004-01-12 1945 EST
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c/winReorderWindowsMultiWindow - Fix the problem that XWin crashes when multiple XWin processes exist. (Kensuke Matsuzaki)
- InitOutput.c, winclipboardthread.c, winglobals.c, winmultiwindowwm.c - Move calls to setlocale () from winclipboardthread.c and winmultiwindowwm.c to InitOutput.c and only call it on the first server generation. Remove the g_fCalledSetLocale global variable. Make sure to call XInitThreads () before calling XSupportsLocale (). This may help fix the crash on startup reported by Lester Ingber. (Harold L Hunt II)
- winclipboardwrappers.c/winProcSetSelectionOwner - Reinitialize the local list of selection owners when the server generation changes. This fixes the crash where copying text in X11 followed by copying an image in Win32 followed by an X Server reset causes XWin.exe to segfault; this was reported by Alexander Gottwald. (Harold L Hunt II)
- winmultiwindowwm.c - Move the global variable g_nQueueSize into the WMMsgQueueRec structure so that it is stored per instance of the multi-window window manager thread. (Harold L Hunt II)
- winmultiwindowwm.c/winInitWM - Zero memory allocated for WMProcArgRec, WMInfoRec, and XMsgProcArgRec structures. This should help prevent problems with uninitialized variables in these structures. (Harold L Hunt II)

#### Release 4.3.0-39

Released: 2004-01-12 1445 EST
Download source: no longer distributed
Changes:

- win.h - Silence some build warnings. (Alexander Gottwald)
- winclipboardwndproc.c, winclipboardwrappers.c, winclipboardxevents.c - Silence non-failure run-time messages using for debugging during development. (Harold L Hunt II)

#### Release 4.3.0-38

Released: 2004-01-11 1730 EST
Download source: no longer distributed
Changes:

- winconfig.c/winConfigKeyboard - Fix problem with Japanese keyboard layout being ignored after server reset in XDMCP sessions. (Takuma Murakami)
- winclipboardwndproc.c/winClipboardWindowProc/WM_DRAWCLIPBOARD - Release ownership of the X11 PRIMARY and/or CLIPBOARD selections if an unsupported format is copied to the Win32 clipboard and we currently own the PRIMARY and/or CLIPBOARD selections. This will prevent a silent failure in X11 when pasting after an unsupported item has been copied to the Win32 clipboard; instead, X11 apps should either paste from an another owned selection (xterm does this) or they might report that the clipboard is empty. (Harold L Hunt II)
- winclipboardwrappers.c - Initialize g_iOwners to None. (Harold L Hunt II)
- winclipboardwrappers.c/winProcSetSelectionOwner - Fix a bug in the call to MakeAtom for the CLIPBOARD atom that was causing MakeAtom to return a failure code instead of the CLIPBOARD atom; this caused the owner window for the CLIPBOARD atom to never be saved by winProcSetSelectionOwner. (Harold L Hunt II)

#### Release 4.3.0-37

Released: 2004-01-11 0215 EST
Download source: no longer distributed
Changes:

- InitOutput.c, win.h, winclipboardthread.c, winwndproc.c - Remove the winDeinitClipboard function since it is no longer needed due to the OsVendorReset function. (Harold L Hunt II)
- winclipboardxevents.c/winClipboardFlushXEvents - Move variable declarations into the event loop so that they are reinitialized for each event that is processed. Remove all calls to pthread_exit and replace them with an abort section in each event that frees allocated resources and sends a SelectionNotify message when the SelectionRequest event is being aborted. Make sure that CloseClipboard will always be called if OpenClipboard has been called. Review the entire function to make sure that the responses to failures are appropriate. The result of this audit is that the clipboard code should not shut down as often from encountering minor errors. (Harold L Hunt II)

#### Release 4.3.0-36

Released: 2004-01-10 2245 EST
Download source: no longer distributed
Changes:

- winclipboardxevents.c/winClipboardFlushXEvents/SelectionRequest - When aborting because neither CF_TEXT nor CF_UNICODETEXT are available from the clipboard, be sure to do so before calling OpenClipboard so that we don't have to be careful to call CloseClipboard when aborting. This should fix problems with other Win32 apps not being able to use the clipboard until something was selected in X11. (Harold L Hunt II)

#### Release 4.3.0-35

Released: 2004-01-10 2015 EST
Download source: no longer distributed
Changes:

- winclipboardwrappers.c/winProcSetSelectionOwner - Remember to abort if stuff->window == None and we did not previously abort. This fixes crashes in some cases when the X11 selection is being disowned by another X Client. (Harold L Hunt II)
- winclipboardwndproc.c/winClipboardWindowProc/WM_DRAWCLIPBOARD - Do not take ownership of the X11 selections when something other than CF_TEXT or CF_UNICODETEXT has been copied into the Win32 clipboard. (Harold L Hunt II)
- winclipboardxevents.c/winClipboardFlushXEvents - Make sure that CF_TEXT and CF_UNICODETEXT are available from the clipboard before request their contents. This some fix some weird behavior and possible crashes. (Harold L Hunt II)

#### Release 4.3.0-34

Released: 2004-01-10 0200 EST
Download source: no longer distributed
Changes:

- winwndproc.c/winWindowProc/WM_DISPLAYCHANGE - Save value of SM_C*VIRTUALSCREEN when fMultipleMonitors is true, instead of SM_C*SCREEN. (Harold L Hunt II)
- winclipboardwrappers.c/winProcEstablishConnection - Change delay in starting clipboard client from the 3rd call to the 4th call when using Xdmcp. Should fix the problem reported by Andrew Braverman; if not, I'll have to make a much more robust system for starting the clipboard client when using Xdmcp. (Harold L Hunt II)
- winclipboardwrappers.c/winProcSetSelectionOwner - Always advertise CF_TEXT clipboard format, optionally advertise CF_UNICODETEXT format. (Harold L Hunt II)
- winclipboardwndproc.c/winClipboardWindowProc/WM_RENDERFORMAT - If wParam is CF_UNICODETEXT, pass TRUE for Unicode support flag (regardless of fUnicodeSupport value) when calling winClipboardFlushXEvents. (Harold L Hunt II)
- winclipboardwndproc.c/winClipboardWindowProc/WM_DESTROYCLIPBOARD - Add new handling for this message; we are supposed to process this message for delayed rendering support. (Harold L Hunt II)
- General Clipboard - Restructure the clipboard system to run a single thread, regardless of the number of screens created in the current process; the reason for this is that X selections are per-display, not per-screen, thus there is no reason to have one thread per screen for managing the clipboard integration. Changing from per-screen to one thread greatly simplified the clipboard handling code and reduced the likelihood of errors due to interaction between multiple clipboard client threads. (Harold L Hunt II)
- winclipboardwrappers.c/winProcSetSelectionOwner - Track whether the PRIMARY and CLIPBOARD selections are owned and if they are transitioning from owned to not owned. When one of PRIMARY or CLIPBOARD is still owned the Win32 clipboard is not disowned; if both PRIMARY and CLIPBOARD are not owned and a transition from one being owned to being disowned is detected, then the Win32 clipboard is disowned. The user-level change is that you can select text in certain X11 apps (which usually sets both the PRIMARY and CLIPBOARD selections), click elsewhere to unselect the text (frees ownership of one of the selections but not the other) and still paste the text in Win32. The previous behavior would not allow you to paste the text in Win32 if the selection was no longer highlighted. (Harold L Hunt II)
- winclipboardwndproc.c/winClipboardWindowProc/WM_DRAWCLIPBOARD - We cannot bail out when NULL == GetClipboardOwner() because some applications deal with the clipboard in a manner that causes the clipboard owner to be NULL when they are in fact taking ownership. One example of this is the Win32 native compile of emacs. Without this fix, text could not be copied from the Win32 compile of emacs and pasted within Cygwin/X. (Harold L Hunt II)
- InitOutput.c - Remember to delete the functions that were moved to the new file called winprocarg.c. (Harold L Hunt II)

#### Release 4.3.0-33

Released: 2004-01-07 2315 EST
Download source: no longer distributed
Changes:

- General - If you use the diff above, note that the Imakefile was missing from previous tarballs, so this diff includes the whole Imakefile. I have updated my source packaging script so that this does not happen again. Also, the source code in this release has already been committed to the xorg repository on freedesktop.org's CVS. (Harold L Hunt II)
- winauth.c - New File - Move winGenerateAuthorization into this new file. This function generates a cookie to be used by the clipboard client for authorization when using Xdmcp. (Harold L Hunt II)
- winglobals.c - New File - Start moving global variables into this file. (Harold L Hunt II)
- winclipboardwrappers.c - New File - Move all clipboard wrappers of ProcVector and InitialVector functions into this file. (Harold L Hunt II)
- winprocarg.c - New File - Move winInitializeDefaultScreens and ddxProcessArgument from InitOutput.c into this file. The same will be done eventually for other functions in InitOutput.c. (Harold L Hunt II)
- win.h, General - Get started on removing "extern" declarations from win.h by including explicit references to extern symbols in the source files that use those symbols. The long term goal is to start breaking up the monolithic win.h header file. (Harold L Hunt II)
- Xserver/dix/dispatch.c/Dispatch() - Add hook to OsVendorReset function that can be optionally defined in the DDX layer when DDXOSRESET is defined. (Harold L Hunt II)
- InitOutput.c/OsVendorReset() - New Function - Send a message to the clipboard client telling it to shutdown, then wait for the clipboard client thread to exit before proceeding. This allows us to cleanly shutdown the clipboard client. Incidentally, I noticed that the previous code would spawn *additional* clipboard client threads when the X Server was reset; this was happening because we trapped IO errors and attempted to reconnect when they happened. There was no code that told a clipboard client thread to exit when the server was being reset so that it could be replaced by a new clipboard client thread (which was happening correctly). This should lead to greater stabilility across X Server resets, though I did discover that this version and previous versions where shutting down after two or three resets without any error message being logged nor exception being thrown. That problem will be looked into later. (Harold L Hunt II)
- winclipboardinit.c, winclipboardthread.c, winclipboardxevents.c, winclipboardwndproc.c - Fix problems getting killed by Xdmcp code and remote XDM/KDM/GDM client on startup. Fix problems not being authorized to connect when using Xdmcp by calling XSetAuthorization and passing it our cookie that was created earlier; this removes the need to save the cookie to a .Xauthority file. Watch the CLIPBOARD selection in addition to the PRIMARY selection and track which was changed within X last so that we know which one we should paste within Win32. Fix crashes when the server resets (as explained above, it still exits after one or two resets, for an unknown reason). The improved clipboard code should now be good to go. (Harold L Hunt II)
- winmultiwindowwm.c - Clean up the startup of the two multi-window threads. Create separate error and IO error handlers for the XMsgProc thread since it was using the same IO error handler as another thread and would try to longjmp into the other thread if it received an IO error, which was likely causing some crashes. The multi-window code needs additional work to confirm that it properly shuts down and exits both threads; something similar to the clipboard shutdown message in OsVendorReset will be needed. (Harold L Hunt II)
- winclipboardxevents.c - Find and fix a last minute bug that caused Unicode clipboard translations to be broken. (Kensuke Matsuzaki, Harold L Hunt II)

#### Release 4.3.0-32

Released: 2004-01-05 1715 EST
Download source: no longer distributed
Changes:

- win.h/WIN_CLIPBOARD_AUTH_SUPPORT - Disable the new Xauth support for the clipboard integration manager with a build-time flag. Be sure to delete ~/.Xauthority if you have one; X Client connections may be prevented if you do not delete this file. (Harold L Hunt II)
- InitInput.c/InitInput - Only wrap ProcVector[X_SetSelectionOwner] when serverGeneration is 1, which prevents multiple wrapping of the function when the server resets (the ProcVector table is not re-initialized upon X Server reset). (Harold L Hunt II)
- InitInput.c/winProcSetSelectionOwner - Use ((DrawablePtr) pWindow)->id instead of client->lastDrawableID for determining the ID of the window that the selection is being owned by. (Harold L Hunt II)
- InitInput.c/winProcSetSelectionOwner - Detect when pWindow is None, in which case the selection is being unowned in X11; add code to release ownership of the Win32 clipboard if we currently own it. (Harold L Hunt II)
- InitInput.c/winProcSetSelectionOwner - Abort if IsWindow fails for the clipboard manager Win32 window handle; this may prevent problems when the X Server resets. (Harold L Hunt II)
- winclipboardwndproc.c/winClipboardWindowProc/WM_DRAWCLIPBOARD - Don't call XSetSelectionOwner when GetClipboardOwner returns NULL, since this means that the Win32 clipboard is unowned; there are many reasons why the Win32 clipboard may be unowned, one of which is that we release ownership of it when the X11 selection is unowned (see above item). (Harold L Hunt II)

#### Release 4.3.0-31

Released: 2004-01-05 0105 EST
Download source: no longer distributed
Changes:

- General - Everything up to the last three entries describes the new clipboard handling system that does not steal ownership of the X11 selection each time that something is selected; this seems to work fine, but it needs to be tested. The last three entries describe my nearly complete attempt at generating a MIT-MAGIC-COOKIE-1, adding it to the list of cookies that the X Server recognizes, and using it when the clipboard client tries to connect during an XDMCP connection. This authentication approach should work, but I need a break from trying to figure out which of the function calls has a minor error in its parameters; thus, it does not currently work. However, feel free to examine the source code and let me know if any of my calls to GenerateAuthorization, AddResource, or XauWriteAuth are incorrect. I would really like to get this automatic authorization working as soon as possible. Until then I will mark this release (and all releases based upon it) as 'test'.
- InitInput.c - Add a function, winProcSetSelectionOwner, and wrap the generic function ProcVector[X_SetSelectionOwner] with it. This allows us to get a notification each time the selection (clipboard) owner changes. Call SetClipboardData (foo, NULL) so that the WM_RENDERFORMAT message will be posted when a Win32 app requests the clipboard contents. (Harold L Hunt II, Alexander Gottwald)
- winclipboardxevents.c/winClipboardFlushXEvents/SelectionNotify - No longer steal ownership of the selection each time it changes in X11. We can do this because we have notification when SetSelectionOwner is called (see above). (Harold L Hunt II)
- winclipboardxevents.c/winClipboardFlushXEvents/SelectionClear - Remove handling, it is no longer needed; it used to request the contents of the selection that we lost ownership of. (Harold L Hunt II)
- winclipboardwndproc.c/winClipboardWindowProc/WM_CREATE,WM_DESTROY - Add information to be used on each call to a window property. (Harold L Hunt II)
- winclipboardwndproc.c/winClipboardWindowProc/WM_CREATE,WM_DESTROY,WM_CHANGECBCHAIN,WM_DRAWCLIPBOARD - Add ourselves to the clipboard viewer chain so that we receive notification when the clipboard contents are changed by a Win32 application. Our normal response to this is to call XSetSelectionOwner, but we specifically do nothing if we currently own the Win32 clipboard. (Harold L Hunt II)
- winclipboardwndproc.c/winClipboardWindowProc/WM_RENDERFORMAT,WM_RENDERALLFORMATS - Request the contents of the X11 selection. Use XPeekIfEvent to wait until the response is added to our event queue (this could probably lead to a dead-lock of a client exists before responding), then call winClipboardFlushXEvents to handle the SelectionNotify event. UTF8 and CompoundText targets require that we call XConvertSelection from the SelectionNotify event, which will cause another SelectionNotify event to be fired; be careful to check for this and do the XPeekIfEvent/winClipboardFlushXEvents thing again if this is the case (this is untested because I did not see any UTF8 or CompoundText targets that needed conversion). Copy the returned contents to the Win32 clipboard with SetClipboardData (). (Harold L Hunt II)
- winscrinit.c/winFinishScreenInitFB - Generate a MIT-MAGIC-COOKIE-1 cookie and add it to the server's list of cookies. (Harold L Hunt II)
- winclipboardthread.c/winClipboardSaveXauthData - Add the generated MIT-MAGIC-COOKIE-1 cookie to the Xauthority file. Beware that this is hard-coded to 127.0.0.1:0 and that the entry is not cleaned up upon exit; this will force the host-based access to be disabled in some cases and could cause problems starting X Clients until this is fixed. (Harold L Hunt II)
- xc/programs/Xserver/Imakefile - Add $(OS) to the XWINLIBS just after libXwin.a is included, which allows us to call unreferenced functions in libXau.a, such as XauWriteAuth. (Harold L Hunt II)

#### Release 4.3.0-30

Released: 2003-12-31 1855 EST
Download source: no longer distributed
Changes:

- xc/programs/XServer/os/access.c - Fix a typo that was causing localhost connections to be sent in xdmcp request packets. On Darwin this connection was even advertized first, causing troubles later. (Matthieu Herrb)
  http://cvsweb.xfree86.org/cvsweb/xc/programs/Xserver/os/access.c.diff?r1=3.50&r2=3.51

#### Release 4.3.0-29

Released: 2003-12-24 1624 EST
Download source: no longer distributed
Changes:

- winkeybd.c/winIsFakeCtrl_L - Call Sleep (0) if the first call to PeekMessage returns nothing. TweakUI occasionally causes the Alt_R press/release to not be in the message queue at the time that we receive the fake Ctrl_L press/release. Calling Sleep (0) gives up the rest of our time slice to other apps that need it, which causes the Alt_R message to show up on our queue. We can then call PeekMessage again and check if the Alt_R is there or not. If it is not there, then we assume that we have a real Ctrl_L press, if it is there, then we discard the fake Ctrl_L as usual. I tested this with the US-International layout and it seemed to work fine. I originally coded this fix with a short "keytest" program and was able to confirm that the fix works there as well. (Harold L Hunt II)
- win.h, winkeybd.c, winkeybd.h, winwndproc.c - Remove dead code that was wrapped with #if WIN_NEW_KEYBOARD_SUPPORT. (Harold L Hunt II)

#### Release 4.3.0-28

Released: 2003-12-23 1125 EST
Download source: no longer distributed
Changes:

- General - Rebrand Cygwin/XFree86 as Cygwin/X since we aren't really a port of XFree86's DDX to Windows; rather, we are a port of the X Window System to Windows. (Harold L Hunt II)

#### Release 4.3.0-27

Released: 2003-12-23 0035 EST
Download source: no longer distributed
Changes:

- wincreatewnd.c - Don't bring the top-level window to the top in Multi-Window and Rootless modes. (Kensuke Matsuzaki)

#### Release 4.3.0-26

Released: 2003-12-18 1015 EST
Download source: no longer distributed
Changes:

- winkeybd.c - Properly save and clear the pointer to the internal mode key state data when the keyboard is initialized, enabled, and disabled. (Takuma Murakami)

#### Release 4.3.0-25

Released: 2003-11-24 0915 EST
Download source: no longer distributed
Changes:

- winkeybd.c - Before setting the autorepeat defaults, check if XKB was not disabled and suppress the error message in the other case. (Alexander Gottwald)
- winconfig.c - Set xkb.disable even if no default keyboard is configured. (Takuma Murakami, Alexander Gottwald)

#### Release 4.3.0-24

Released: 2003-11-21 1425 EST
Download source: no longer distributed
Changes:

- InitOutput.c/ddxProcessArgument () - Keep track of the -kb parameter. (Alexander Gottwald)
- winwndproc.c/winWindowProc () - Only discard the windows autorepeat messages if the XKB layer is not disabled. (Alexander Gottwald)
- winconfig.c - Query windows about its keyboard autorepeat rate and use this as default for the xserver. (Alexander Gottwald)
- winconfig.c - Changed log output for keyboard autodetection to use the probed-prefix instead of the default-prefix. (Alexander Gottwald)

#### Release 4.3.0-23

Released: 2003-11-17 2100 EST
Download source: no longer distributed
Changes:

- General - Recompile all libraries and executables against fixed Xaw and Xt libraries. Enabled OS/2-style fix for VendorShell and vendorShellWidgetClass. (Harold L Hunt II)
- winkeybd.c/winKeybdProc () - Check xkbi pointer for NULL. Fixes crash when XKB was disabled with ``-kb''. (Alexander Gottwald)
- winconfig.c/winConfigKeyboard () - Read the AutoRepeat option from the configfile. (Alexander Gottwald)
- winkeybd.c/winKeybdProc () - Initialize the XKB input layer with the AutoRepeat options from the configfile. (Alexander Gottwald)

#### Release 4.3.0-22

Released: 2003-11-09 1622 EST
Download source: no longer distributed
Changes:

- win.h, winkeybd.c, winmultiwindowwndproc.c, winwndproc.c - Remove winStoreModeKeyStates () function and stop storing mode key state within the hw/xwin layer. Instead, query the internal X Server mode key state, when we know that no key press/release events are pending, and send key press/release events to get that state in sync with the Windows mode key states. This removes the possibility that the hw/xwin and internal X Server mode key state vectors would get out of sync. This is also a general cleanup that utilizes more existing code and removes some Cygwin-specific code. (Takuma Murakami)
- winwndproc.c - Catch WM_ENDSESSION message and perform clean shutdown. (Takuma Murakami)
- winwndproc.c - WM_*KEYDOWN - Discard key presses generated from Windows auto-repeat (these sorts of auto-repeats are handled by X). (Takuma Murakami)
- winmouse.c - Remap mouse buttons here when XFree86Server and XINPUT are defined, since this combination of flags prevents a lower layer from performing such remapping. The end result is that remapping mouse buttons works for the first time. (Takuma Murakami)
- winconfig.c - Load the US keyboard layout for Japanese keyboards. This ensures that WM_KEYUP messages are sent for the Caps Lock key. (Takuma Murakami, Kensuke Matsuzaki)
- win.h, winengine.c, winmultiwindowwindow.c, winmultiwindowwm.c, winpfbdd.c, winshaddd.c, winshadddnl.c, winshadgdi.c, winwindow.h - Add an engine-specific function that is called after a Windows-window is created in -multiwindow mode. This is a start for adding DirectDraw support to -multiwindow mode. However, I got a little confused here and thought that one primary surface would need to be created per window, which is not correct. There will be one primary surface with a clip list that causes blits to stay within the region of all of our visible windows. In any case, this is a step in the right direction. There code is currently disabled since the engine setting code only allows the GDI engine when -multiwindow is being used. (Harold L Hunt II)

#### Release 4.3.0-21

Released: 2003-10-28 1355 EDT
Changes:

- General - Recompile all libraries and executables against stand-alone freetype2 and fontconfig packages. (Harold L Hunt II)
- General - Cygwin now has strl{cat,cpy}(), so #define HasStrlcat as YES in xc/config/cf/cygwin.cf and rebuild all apps and libraries. (Matthieu Herrb)

#### Release 4.3.0-20

Released: 2003-10-17 1340 EDT
Download source: no longer distributed
Changes:

- Clipboard Support - Enabled copying and pasting of non-ascii characters even when Windows does not support Unicode (i.e. Windows 95/98/Me). (Kensuke Matsuzaki)
- Clipboard Support - Add ``-nounicodeclipboard'' command-line parameter that instructs the clipboard support in XWin.exe to not use Unicode functions, even if Windows supports them. (Kensuke Matsuzaki)
- winconfig.c - Prevent JP layouts loaded for JP Windows with US keyboards. (Takuma Murakami)
- winscrinit.c - Bail if -rootless and -multiwindow flags both present. (Harold L Hunt II)

#### Release 4.3.0-18

Released: 2003-10-06 2120 EDT
Download source: no longer distributed
Changes:

- winclipboardxevents.c - Fix crash when copying large amounts of data from an X application. The crash was caused because the encoding of the XTextProperty was INCR, which is an incremental transfer of large amounts of text. The problem isn't really fixed because copying or cutting large amounts of text now causes that text to be lost without warning, rather than copied to the clipboard. The real solution will be to implement the INCR protocol, which will follow in a few days. (Kensuke Matsuzaki, Harold L Hunt II)

#### Release 4.3.0-17

Released: 2003-10-05 1305 EDT
Download source: no longer distributed
Changes:

- winwndproc.c - Ignore Win32 repeats for the VK_CAPITAL (Caps Lock) key. This may or may not help to keep the state of the Caps Lock key in X and Windows in sycnh; it all depends on whether we are receiving multiple VK_CAPITAL key press messages, or if we are receiving one key press message with a repeat count greater than 1. If this doesn't work then we may need to look at masking key press events for Lock keys that are already pressed in X. (Harold L Hunt II)

#### Release 4.3.0-16

Released: 2003-10-04 1735 EDT
Note: No Cygwin-specific changes this time. The only file changed was xc/programs/Xserver/os/WaitFor.c, which was merely synchronized with XFree86's CVS HEAD version.
Changes:

- xc/programs/Xserver/os/WaitFor.c - Backport Ivan Pascal's final changes to timer processing (which was causing duplicate keystrokes in some situations).

#### Release 4.3.0-15

Released: 2003-10-03 2100 EDT
Download source: no longer distributed
Changes:

- winconfig.c - Add another German keyboard layout. (Alexander Gottwald)
- winconfig.c - Setting the default layout for Japanese to jp (was jp106 before). (Alexander Gottwald)
- winconfig.c - Add a new default for Portuguese (Brazil, ABNT2). (Alexander Gottwald)
- winconfig.c - Print the layout number in hexadecimal instead of decimal. (Alexander Gottwald)
- winmultiwindowwndproc.c/winTopLevelWindowProc() - Add processing for WM_WINDOWPOSCHANGED to cause window to repaint when using TweakUI's focus-follows-mouse behavior. (Harold L Hunt II)

#### Release 4.3.0-14

Released: 2003-09-22 1550 EDT
Download source: no longer distributed
Changes:

- winconfig.c - Add the Japanese keyboard layout to the list of defaults as jp106. (Alexander Gottwald)

#### Release 4.3.0-13

Released: 2003-09-21 0014 EDT
Download source: no longer distributed
Changes:

- Merge NativeGDI development branch. The NativeGDI engine is now accessible via the "-engine 16" command-line parameter. Note that the byte order for 1-bit bitmaps is only configurable at compile time, which causes the output to be totally messed up. Although, you can at least examine how the engine currently works. (Alan Hourihane)
- Display the argument to the -query option in the window title. (Alexander Gottwald)
- winprefslex.l - Remove use_unused_functions(), which was only used to force two functions to be imported, thus eliminating a compiler warning. This is no longer needed with the newest test version of flex. (Earle F Philhower III)
- cygwin.cf - Define HasExpat as YES. This adds a dependency on Cygwin's expat lib, but it removes the distribution of an out of date version of expat that was included with the XFree86 source code. (Gerrit P. Haase, Harold L Hunt II, Alexander Gottwald)
- Fix the occasional repeating of keystrokes in the xkb layer. This problem has been present in XFree86 for years, but it was more apparent on Cygwin/X. This patch is not yet in the XFree86 CVS tree, so any bugs caused by this patch will need to be reported to XFree86. See the following email for a description of how the patch works XFree86 patch email. (Ivan Pascal)
- General - Add runtime detection for the Cygwin IPC Daemon. This allows SHM (shared memory) support when the IPC Daemon is running. SHM support is automatically disabled, with no adverse effect, when the IPC Daemon is not running. There is now a dependency on the cygipc package, but no additional installation steps are required, unless you want SHM support; in which case you need to run ipc-daemon2 (See the cygipc documentation for more details). (Ralf Habacker, Harold L Hunt II)
- cygwin.cf - Ditch "-DNO_ALLOCA" and replace with "-DINCLUDE_ALLOCA_H" for AllocateLocalDefines. (Nicholas Wourms)
- cygwin.cf - Ditch "-DUSE_XWCHAR_STRING -DUSE_XMBTOWC" and use "-DHAS_WCHAR_H -DHAS_WCTYPE_H -DHAS_ISW_FUNCS -DNO_WIDEC_H" for XawI18nDefines. (Nicholas Wourms)
- General - Recompile all libraries and executables for run-time enabled shared memory support (SHM). (Harold L Hunt II)
- General - Recompile all libraries and executables for Cygwin 1.5.3+. (Harold L Hunt II)
- X11.tmpl, cygwin.rules - Fix some warnings about undefined symbols during cross compilation. (Harold L Hunt II)

#### Release 99

Released: 2003-09-14 1740 EDT
Committed to XFree86 CVS: not yet
Basis: Release 98
Cygwin setup.exe package: XFree86-xserv-4.3.0-9
Download source: no longer distributed
Changes:

- winmultiwindowwm.c - Add handling for WM_CHANGE_STATE IconicState messages; minimize the associated Windows window when these messages are received. (Harold L Hunt II)

#### Release 98

Released: 2003-09-11 1314 EDT
Committed to XFree86 CVS: not yet
Basis: Release 97
Cygwin setup.exe package: XFree86-xserv-4.3.0-7
Download source: no longer distributed
Changes:

- winconfig.c - Disable the check for the specific keyboardtype 4 (pc105) and always assume that a 105 key keyboard is present. This fixes undetected layouts because of keyboard drivers which return undocumented keyboardtypeids. (Alexander Gottwald)
- Xserver/xkb/ddxLoad.c - Read keymaps generated by xkbcomp as binary files. (Alexander Gottwald)

#### Release 97

Released: 2003-09-03 1955 EDT
Committed to XFree86 CVS: not yet
Basis: Release 96
Cygwin setup.exe package: XFree86-xserv-4.3.0-6
Download source: no longer distributed
Changes:

- winconfig.c - Print the name of the keyboard layout to help in adding new layouts. (Alexander Gottwald)
- winshadddnl.c - Stop printing the IDirectDrawSurface4_Blt() failure messages after 10 times. The message was clogging some people's log files. (Harold L Hunt II)

#### Release 96

Released: 2003-08-27 1505 EDT
Committed to XFree86 CVS: not yet
Basis: Release 95
Cygwin setup.exe package: XFree86-xserv-4.3.0-4
Download source: no longer distributed
Changes:

- winprefs* - Add a system to allow the user to specify arbitrary commands for the system tray menu (e.g. program launching shortcuts) as well as custom icons for certain window classes. This is a huge system and is really very amazing. Preferences are stored in ~/.XWinrc or in /usr/X11R6/lib/X11/system.XWinrc, which is formatted as in this example .XWinrc file. (Earle F. Philhower III)
- winmultiwindowclass.c - Fix a string copy bug in MultiWindow mode that was likely to have been causing crashes for some people. (Earle F. Philhower III)
- winconfig.c - Add new defaults for keyboardlayout: English (USA, Dvorak) and Norwegian. (Alexander Gottwald)

#### Release 95

Released: 2003-08-02 2115 EDT
Committed to XFree86 CVS: not yet
Basis: Release 94
Cygwin setup.exe package: XFree86-xserv-4.3.0-3
Download source: no longer distributed
Changes:

- Signal the clipboard and multiwindow window manager threads to stop trying to reconnect when the server is being shutdown. These reconnection attempts were causing intermittent GPFs (General Protection Faults) on shutdown. (Earle F. Philhower III)

#### Release 94

Released: 2003-08-01 2345 EDT
Committed to XFree86 CVS: not yet
Basis: Release 93
Cygwin setup.exe package: XFree86-xserv-4.3.0-2
Download source: no longer distributed
Changes:

- winmultiwindowwm.c, winmultiwindowclass.h, winmultiwindowwndproc.c - Automatically validate the sizes of windows while you're sizing them, just like you find in most X11 window managers. (Earle F. Philhower III)

#### Release 93

Released: 2003-07-30 1915 EDT
Committed to XFree86 CVS: not yet
Basis: Release 92
Cygwin setup.exe package: XFree86-xserv-4.2.0-44
Download source: no longer distributed
Changes:

- wintrayicon.c - Change code that shows/hides the seperator on the tray icon menu. This change was required to stay in synch with the change in the position of the tray icon menu items that was applied to XWin.rc in Release 92. (Earle F. Philhower III)

#### Release 92

Released: 2003-07-28 2010 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 91
Cygwin setup.exe package: XFree86-xserv-4.2.0-43
Download source: no longer distributed
Changes:

- winconfig.c - Add new defaults for keyboardlayout: German (Switzerland) and English (USA, International). (Alexander Gottwald)
- XWin.rc - Move Exit button to the bottom of the tray icon's menu. (List suggestion)
- winmultiwindowclass.c - Add checks for NULL pointers. Should help fix some crashes in MultiWindow mode. (Ralf Habacker)
- General - Add global variable that tracks whether XInitThreads () has been called so that it is only called once per process. Calling XInitThreads multiple times may have been contributing to crashes. (Harold L Hunt II)

#### Release 91

Released: 2003-06-02 1055 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 90
Cygwin setup.exe package: XFree86-xserv-4.2.0-42
Download source: no longer distributed
Changes:

- winconfig.c - Change nodeadkeys default to NULL for the German (Germany) keyboard layout. (Alexander Gottwald, Benjamin Riefenstahl)
- X.ico - Add 24 x 24 - 256 color and 24 x 24 - 16 color icons. (Harold L Hunt II, Benjamin Riefenstahl)
- wintrayicon.c - Change hard-coded 16 x 16 icon load to use GetSystemMetrics (SM_CXSMICON) and GetSystemMetrics (SM_CYSMICON) to retrieve size of small icon to be used. Hopefully this loads the 24 x 24 icon on systems that have been changed to use 24 x 24 icons for the notification tray. (Harold L Hunt II, Benjamin Riefenstahl)
- winmultiwindowwindow.c - Break some functions from this file into several new files: winmultiwindowicons.c, winmultiwindowshape.c, and winmultiwindowwndproc.c. Provide enough Tender Loving Care (TLC) to the various header files so that all files still build with no warnings. Note that this drops the size of winmultiwindowwindow.c from 55 KiB to 21 KiB and creates three new files, none of which is larger than 23 KiB. Of those three new files, winmultiwindowicons.c is 10 KiB, winmultiwindowshape.c is 6 KiB, and winmultiwindowwndproc.c is 23 KiB. Finally, it is interesting to note that winmultiwindowwndproc.c contains a single function, winTopLevelWindowProc(), so that file cannot be made any smaller by breaking other functions into separate files. (Harold L Hunt II)
- winclass.c, winclass.h - Rename these files to winmultiwindowclass.c and winmultiwindowclass.h, respectively, since they are only used in MultiWindow mode. Prefix the functions in these files with MultiWindow. (Harold L Hunt II)

#### Release 90

Released: 2003-06-01 1655 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 89
Cygwin setup.exe package: XFree86-xserv-4.2.0-41
Download source: no longer distributed
Changes:

- wintrayicon.c/winInitNotifyIcon() - Replace call to LoadIcon with a call to LoadImage that specifies the 16x16 icon as the size to be loaded. This makes the tray icon look much cleaner. (Colin Harrison)
- wintrayicon.c/winDeleteNotifyIcon() - Call DestroyIcon on the icon that was loaded in winInitNotifyIcon(). (Harold L Hunt II)
- Clean up all compiler warnings in xc/programs/Xserver/hw/xwin. The code now builds without a single warning when using the default compilation flags on a Cygwin host. (Harold L Hunt II)

#### Release 89

Released: 2003-05-31 2255 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 88
Cygwin setup.exe package: XFree86-xserv-4.2.0-40
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c/winTopLevelWindowProc() - Rework the mouse polling timer so that it is attached to the root-level window. This prevents multiple mouse polling timers from being created, which was happening in the old versions. Introduce a new way of determining that the timer should be created or deleted, which will hopefully fix some corner cases where the timer was not being created. (Harold L Hunt II)
- XWin.rc - Remove a couple of window style flags that were not compatible with Earle's patch for removing the minimize and maximize buttons from the dialog boxes. (Earle F. Philhower III)
- XWin.rc - Make ``x'' and ``C'' hotkeys for the Exit Confirmation dialog box. (Colin Harrison, Biju G C)

#### Release 88

Released: 2003-05-30 2355 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 87
Cygwin setup.exe package: XFree86-xserv-4.2.0-39
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c/winScaleXBitmapToWindows() - Clear the bits in the alpha channel of the converted 32 bpp bitmap because it was causing problems with window icons for certain display drivers. Most notably, display drivers from ATI were exhibiting these problems. (Earle F. Philhower III)
- wincursor.c/winPointerWarpCursor() - Discard the first cursor warp message, since this is just X putting the mouse cursor in the center of the screen, which is undesirable in Windows. (Earle F. Philhower III, Harold L Hunt II)
- windialogs.c/winDisplay[Exit|DepthChange]Dialog() - Add calls to drop the minimize and maximize buttons from the Exit Confirmation and Depth Change dialog boxes, while preserving the icon on the upper left hand corner of the dialog window. (Earle F. Philhower III)

#### Release 87

Released: 2003-05-29 0045 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 86
Cygwin setup.exe package: XFree86-xserv-4.2.0-38
Download source: no longer distributed
Changes:

- Convert X application icons set in WM_HINTS from XPMs to Windows BMPs using an internal algorithm. Earle, Ralf, and Colin worked together on this one with coding, suggesting ideas, and testing. The end result is, as they say, very nearly perfect. Each top-level X window is now given its own class that has an icon associated with it. The icon can be even changed while the application is running and this is properly handled. Icons are properly freed when a window and its associated class are destroyed. This entry encompasses a flurry of emails and patches that I cannot possibly recount here; hopefully no one feels slighted by this brief summary. (Earle F. Philhower III, Ralf Habacker, Colin Harrison)
- Set XIconSizes() to the Windows approved 16, 32, and 48. It doesn't seem to be looked at by anything, but it is in the XLib documents as something a WM should set. (Earle F. Philhower III)
- Removed several misc compile warnings. (Earle F. Philhower III)
- winmultiwindowwindow.c/winTopLevelWindowProc() - Add a call to winKeybdReleaseKeys () in WM_KILLFOCUS. This fix stops the phantom key presses that people were seeing. The example here would be to launch an xterm, then launch another xterm from that xterm. Type ``exit'' in the first xterm and press enter. The enter keydown message is processed by the second xterm, but the keyup is never processed so it got sent repeatedly to the root-level message loop (which performs all keyboard processing), causing phantom key presses to show up in any X app that currently had the focus. At least, I think that is that the problem was. An interim solution was to press and release the enter key, which would cause a keydown/keyup message combo to be sent, thus ending the crazy looping. This fix pops all keys that are pressed when the current X app looses the keyboard focus. Colin suggested this, Earle move the location of the call to the proper place. (Colin Harrison, Earle F. Philhower III)
- XWin.rc - Change the Exit Confirmation and Depth Change dialog boxes to be centered by adding the DS_CENTER flag to the STYLE attribute. (Biju G C, Harold L Hunt II)
- winmultiwindowwindow.c/winTopLevelWindowProc() - Let DefaultWindowProc() handle the Alt+F4 key combo in the WM_*KEYDOWN messages. This allows a user to close a top-level X window (which has an associated Windows window) by pressing Alt+F4. Note that this happens regardless of the -[no]winkill command-line parameter. This is the desired behavior since -[no]winkill should only affect the behavior of the root-level window, not the individual X Client windows. (Biju G C, Harold L Hunt II)
- winwndproc.c/winWindowProc() - Define a WM_GIVEUP message that calls GiveUp(); remove the GiveUp() call from WM_CLOSE and replace it with a call to winDisplayExitDialog(), which displays the Exit Confirmation dialog box. This only makes sense in conjunction with the next change log entry. (Biju G C, Harold L Hunt II)
- windialogs.c/winExitDlgProc()/WM_COMMAND/ID_OK - Pass WM_GIVEUP to PostMessage() instead of passing WM_CLOSE. This patch causes the end result that, in MultiWindow mode, selecting Close from the system menu for non-root-level Windows window causes that particular X Client to be killed. The previous result was that the XWin.exe process was exited without displaying the Exit Confirmation dialog box. This must have been a frustrating situation indeed and it makes this bug a marvelous catch on Biju's part. NOTE: The system menu can be opened by right clicking on the title bar, or by left clicking the icon in the upper left-hand corner of the app window, or by right clicking on the application entry in the task bar. (Biju G C, Harold L Hunt II)
- windialogs.c/winDisplay(Exit)|(ChangeDepth)Dialog() - Call SetForegroundWindow() if the dialog box has already been created. This pulls the dialog box to the foreground if it has been buried by other windows. It is legitimate to do this here because we are responding to user input of some sort when this function gets called. (Harold L Hunt II)
- XWin.rc - Add the extended style WS_EX_DLGMODALFRAME and the normal style WS_DLGFRAME to the Exit Confirmation dialog box in an attempt to stop the dialog box from being listed in the task bar, which was reported by one user. This task bar listing has been negatively confirmed in Windows 2000 and Windows XP, but it may be happening in other versions of Windows. Of course, this could have been a reference to the fact that the dialog is present in the Alt+Tab list. However, that is the desired behavior and will not be changed (how else could you get back to that dialog box?). (Biju G C, Harold L Hunt II)
- Try, in vain, to maintain a uniform coding style and variable/function naming convention. I am mostly winning the curly-brace (curly braces on separate lines please), indenting (emacs default please), parameter spacing (e.g. func (x, y) instead of func( x,y ), func( x, y ), or even func(x,y)), and binary operator spacing ((x + y) instead of (x+y)) wars, but I am pitiful excuse for a belligerent dictator when it comes to the variable naming (follow examples in winwndproc.c), variable prefixing (follow winwndproc.c, which is my own sick mix of Hungarian prefixes (int, dw, psz, f) and old-school C prefixes (i, n, l)), and function naming wars. I would like to ask all contributors to try to follow the code that they see in the files that I authored, but I don't feel that I have the right to reject patches that don't follow those conventions. I will, however, try my best to adapt all patches so that I can read them and more easily maintain them in the future. You may also have noticed that I am a profuse commentor... I do that because I have a very poor memory of why things were done they way that they were done, so I sprinkle tips throughout the code to help myself remember things. You know, I have been realizing the entire time that I was writing this change log that I have low blood sugar, I am very tired, and this is so not the place for such huge amounts of text. Time for bed. Change log over. (Anonymous... Like you have to guess)

#### Release 86

Released: 2003-05-18 1426 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 85
Cygwin setup.exe package: XFree86-xserv-4.2.0-37
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c/winTopLevelWindowProc() - Remove a dependency on GetWindowInfo(), which is only present in NT 4.0 SP6, Windows 98, and later. Thanks to Dr. Charles L. Werner for reporting this problem on Windows NT 4.0 SP3 and to Alexander Gottwald for confirming that GetWindowInfo() is not present in Windows 95. (Earle F. Philhower III)

#### Release 85

Released: 2003-05-17 1320 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 84
Cygwin setup.exe package: XFree86-xserv-4.2.0-36
Download source: no longer distributed
Changes:

- Implement window title changing in MultiWindow mode. (Earle F. Philhower III)
- Implement an Always On Top command in the right-click menu (System Menu) for each window in MultiWindow mode. (Earle F. Philhower, III)
- Move the XNextEvent loop into a separate thread for MultiWindow mode. (Earle F. Philhower III)
- Fix a race between the startup of the clipboard thread and MultiWindow window manager thread that caused window title changing to bork. (Harold L Hunt II)
- Stop calling pthread_exit () from winClipboardErrorHandler (). An error is an error, not a reason to dump core. This may fix problems people have been having with -clipboard, but I don't make any promises. (Harold L Hunt II)

#### Release 84

Released: 2003-05-13 0954 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 83
Cygwin setup.exe package: XFree86-xserv-4.2.0-35
Download source: no longer distributed
Changes:

- Fix/implement window maximizing and restoring in MultiWindow mode. (Earle F. Philhower III)
- Implement handling in MultiWindow mode for monitors to the left of the primary monitor on systems with multiple monitors. (Earle F. Philhower III)
- Destroy the Exit confirmation dialog box and NULL its pointer when the server is reset. This fixes a problem that occurred when the Exit confirmation dialog box was displayed and the server was reset; the Exit confirmation dialog box would never display again after that happened, preventing you from normally exiting Cygwin/X. (Harold L Hunt II)
- Make the Windows window title include the display number and screen number (e.g. Cygwin/X 0:0) for the main window in non-MultiWindow modes and the normally hidden root window in MultiWindow mode. (Harold L Hunt II)

#### Release 83

Released: 2003-05-01 1250 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 82
Cygwin setup.exe package: XFree86-xserv-4.2.0-34
Download source: no longer distributed
Changes:

- Fix the Exit confirmation dialog box so that the arrow keys, tab keys, and Enter/Escape keys all work. Additionally, make the Exit confirmation dialog box get the keyboard focus when it is opened. It was being set as the active window, but the keyboard focus was not being set properly. (Harold L Hunt II)
- Make the Cancel button the default button on the Exit confirmation dialog box. Thanks to Biju G C for giving me a heads-up on this one. (Harold L Hunt II)
- Fix the cursor hiding on the Exit confirmation dialog box that was occurring when no X Client windows were open in MultiWindow mode. (Harold L Hunt II)
- Fix the Exit confirmation dialog box so that it doesn't prevent the keyboard focus from returning to X Client windows in MultiWindow mode when you dismiss the dialog box by closing it or by pressing Cancel. (Harold L Hunt II)
- Change the root window title in MultiWindow mode to ``Cygwin/X'' from ``Cygwin/X rl''. (Harold L Hunt II)
- Change MultiWindow mode to use XWin.log again, instead of XWinrl.log. (Harold L Hunt II)
- Change the top-level window procedure for MultiWindow mode to share a global cursor hidden/shown flag with the root window procedure. (Harold L Hunt II)

#### Release 82

Released: 2003-04-30 2025 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 81
Cygwin setup.exe package: XFree86-xserv-4.2.0-33
Download source: no longer distributed
Changes:

- Add an exit confirmation dialog box for when the user selects Exit from the tray icon right-click menu and for when the user presses Alt-F4 or Ctrl-Alt-Backspace (if the -unixkill command-line parameter was specified). (Harold L Hunt II)
- Add ``Show Root Window'' and ``Hide Root Window'' commands to the tray icon right-click menu when using MultiWindow mode (-multiwindow command-line parameter). These commands should be self-explanatory. Thanks to Biju G C for the idea for this. (Harold L Hunt II)
- Add the X icon to the Depth Change dialog box. Has anyone ever seen this dialog box? I added it months ago and have never heard from anyone that it works or doesn't work. (Harold L Hunt II)

#### Release 81

Released: 2003-04-29 2347 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 80
Cygwin setup.exe package: XFree86-xserv-4.2.0-32
Download source: no longer distributed
Changes:

- Fix tray icon right-click menu to make sure that it disappears when you click outside of the menu. (Harold L Hunt II)
- Delete the tray icon in the per-screen close procedure, which ensures that every tray icon is deleted. This also causes the tray icons to be deleted when the server is reset, which is required since the tray icons are recreated when the server is reset. (Harold L Hunt II)

#### Release 80

Released: 2003-04-29 1932 EDT
Committed to XFree86 CVS: 2003-07-29
Basis: Release 79
Cygwin setup.exe package: XFree86-xserv-4.2.0-31
Download source: no longer distributed
Changes:

- Add automatic keyboard detection for ``Portuguese (Brazil)'', ``Portuguese (Portugal)'', and ``Italian''. (Alexander Gottwald)
- Add taskbar notification area (tray) icon. Exit on double-click of icon. (Early Ehlinger)
- Add popup menu for right-click on tray icon. Add menu item for ``Exit''. (Harold L Hunt II)
- Add -[no]trayicon command-line parameters. The default is for the tray icon to be created for each screen (as if -trayicon were passed). You can turn tray icons off by placing -notrayicon at the beginning of the parameter list to XWin.exe (must be before any -screen x parameters). You can then enable the tray icon on a screen-by-screen basis by placing -trayicon after any -screen x parameter that you wish to have tray icons enabled for. For example, ``XWin.exe -notrayicon -screen 0 -screen 1 -screen 2 -trayicon'', would create three screens, two of which (screens 0 and 1) would not have tray icons, while the third (screen 2) would.
- Hide root window in MultiWindow mode. (Early Ehlinger)
- Add some initial support files that might eventually hold code for the X Video Extension. These files do not currently affect the operation of the server and I have stopped working on them for the time, but I will leave them there as a place holder. (Harold L Hunt II)

#### Release 79

Released: 2003-03-12 0937 EST
Committed to XFree86 CVS: 2003-07-29
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-27
Download source: no longer distributed
Changes:

- MultiWindow Mode - Fix for the focus jumping rapidly and uncontrollably between windows in certain scenarios. (Kensuke Matsuzaki)

#### Release 78

Released: 2003-02-24 0828 EST
Committed to XFree86 CVS: 2003-07-29
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-26
Download source: no longer distributed
Changes:

- Automatically detect several non-U.S. keyboard configurations by querying Windows for the current locale. (Alexander Gottwald)
- Add a check for the height not being toggled to a positive integer when the Shadow GDI DIB is created. One user has reported it so far, so it may be due to a single video card or driver version. Also, this may not fix the problem. (Harold Hunt)

#### Release 77

Released: 2003-01-29 1415 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 76
Cygwin setup.exe package: XFree86-xserv-4.2.0-25
Download source: no longer distributed
Changes:

- Only call setlocale () once per process. This was causing crashes on startup when using both the -clipboard and -multiwindow command-line parameters. (Kensuke Matsuzaki, Harold Hunt)

#### Release 76

Released: 2003-01-28 1923 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 75
Cygwin setup.exe package: XFree86-xserv-4.2.0-24
Download source: no longer distributed
Changes:

- winshadgdi.c/winAllocateFBShadowGDI - Fix how dwStride was being calculated, which was causing a crash on startup with both the -engine 1 and -multiwindow command-line parameters. (Harold Hunt)

#### Release 75

Released: 2003-01-26 2245 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 74
Cygwin setup.exe package: XFree86-xserv-4.2.0-23
Download source: no longer distributed
Changes:

- winshaddd[nl].c/winReleasePrimarySurfaceShadowDD[NL] - Check that pddsPrimary is not NULL before calling IDirectDrawSurface[2|4]_SetClipper. This most likely showed up as a crash during video depth changes. (Alexander Gottwald)
- winshaddd.c - Change a few accidental IDirectDrawSurface4 references to IDirectDrawSurface2. (Harold Hunt)

#### Release 74

Released: 2003-01-24 1105 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 73
Cygwin setup.exe package: XFree86-xserv-4.2.0-22
Download source: no longer distributed
Changes:

- xc/lib/xtrans/Xtransutil.c - Remove Cygwin-specific defines of fchown and fchmod to chown and chmod, respectively. It is not clear when these were added, but they are certainly no longer needed and are likely the cause of the first segfault that occurs if you debug XWin.exe under gdb. (Takashi Sawanaka)
- Remove the condition variable used in the startup of the threaded clipboard manager and multi-window window manager; the condition variable was not needed and actually caused a race condition that could prevent either manager from starting up. Instead, just use a mutex to hold the threads until the server has started, at which point the mutex is unlocked. (Harold Hunt)
- winmultiwindowwm.c, winclipboardthread.c - Remove calls to _Xsetlocale and replace them with calls to setlocale, since _Xsetlocale is just defined to be setlocale. (Kensuke Matsuzaki)
- Fix a problem where the server window would shrink each time the server was reset. This problem only happened in non-rootless, non-fullscreen, non-nodecoration, and non-scrollbars modes. In other words, it only happened when you ran the X Server in a single window that had a window border but no scrollbars. (Harold Hunt)

#### Release 73

Released: 2003-01-20 0108 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 72
Cygwin setup.exe package: XFree86-xserv-4.2.0-21
Download source: no longer distributed
Changes:

- Preliminary integration of the xwinclip functionality into the main server executable. This functionality is accessible via the -clipboard command-line parameter. (Harold Hunt)
- Delay the execution of the Multi-Window Window Manager thread until the X Server has finished starting up. (Harold Hunt)
- Restructure the way that the Multi-Window Window Manager handles fatal errors. Return FALSE when we encounter an initialization error so that the server can make a clean exit, instead of aborting immediately by calling exit (1). For later errors, call pthread_exit (NULL) instead of exit (1) so that only the Multi-Window Window Manager aborts; there is no need to kill the X Server process since work could still be recovered without the window manager module. (Harold Hunt)
- Destroy the pthread mutex and condition variables, used for synchronization in the Multi-Window Window Manager, upon X Server exit. (Harold Hunt)

#### Release 72

Released: 2003-01-17 0153 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 71
Cygwin setup.exe package: XFree86-xserv-4.2.0-20
Download source: no longer distributed
Changes:

- winmultiwindowwindow.c - Add an evil, naughty, ugly, shameless, and worthless hack to the multi-window mode to enable the X Non-Rectangular Shape extension. This will need to be evaluated and fixed by other developers. (Harold Hunt)

#### Release 71

Released: 2003-01-15 1007 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: Release 70
Cygwin setup.exe package: XFree86-xserv-4.2.0-
Download source: no longer distributed
Changes:

- This is an unstripped build to aid in debugging the new multiwindow mode.
- Attempt at fixing the segfault on startup that some users are reporting. (Kensuke Matsuzaki)
- New -multimonitor command-line parameter that is used to tell XWin.exe to display across all available displays. (Nick Crabtree)

#### Release 70

Released: 2003-01-12 1434 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-18
Download source: no longer distributed
Changes:

- EXPERIMENTAL: New multiwindow mode (invoked with the -multiwindow command-line parameter) that creates each top-level X window in a Microsoft Windows window. Note that there are still debugging options on in this release, so do not expect multiwindow mode to be polished enough for everyday use. (Kensuke Matsuzaki)

#### Release 69

Released: 2002-11-07 0015 EST
Committed to XFree86 CVS: 2003-02-12 1005 EST
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-16
Download source: no longer distributed
Changes:

- Fix memory leaks in rootless mode. (Kensuke Matsuzaki)
- The test releases, and all future stable releases, are now built with GCC 3.2. There were no problems encountered when switching to the new compiler version. (Harold Hunt)

#### Release 68

Released: 2002-10-20 2321 EDT
Committed to XFree86 CVS: 2002-10-31 0610 EST
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-15
Download source: no longer distributed
Changes:

- Add support for non-rectangular windows created by the X Shape Extension while in Rootless mode (e.g., ``XWin -rootless''). (MATSUZAKI Kensuke)
- Not in the release build, but in the sources: Clean up the RANDR extension code to match the latest RANDR interface. This can't be enabled yet because it crashes on startup in 32 bit per pixel mode. (Harold Hunt)

#### Release 67

Released: 2002-10-18 2248 EDT
Committed to XFree86 CVS: not yet
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-14
Download source: no longer distributed
Changes:

- Turn off debugging message in winwindow.c/winAddRgn () that was being printed thousands, if not millions, of times. (Harold Hunt)

#### Release 66

Released: 2002-10-16 2004 EDT
Committed to XFree86 CVS: 2002-10-17 0400 EDT
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-13
Download source: no longer distributed
Changes:

- Include an X icon and the necessary build rules for building Windows resource files (even while cross compiling). (Harold Hunt, Jehan Bing)
- Include a preliminary rootless mode. (MATSUZAKI Kensuke)
- XF86Configfile suppport. (Alexander Gottwald)
- Scrollbars support. (Jehan Bing, Harold Hunt)
- Warning dialog on disruptive screen depth change --- not quite perfect. (Harold Hunt)

#### Release 65

Released: 2002-07-16 0051 EDT
Committed to XFree86 CVS: not yet
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-12
Download source: no longer distributed
Changes:

- Enable initial scrollbar support, when the new ``-scrollbars'' command-line argument is passed. (Jehan Bing, Harold Hunt)
- Correct the preprocesor definition of PROJECTROOT for xc/programs/Xserver/hw/xwin/Imakefile. (Alexander Gottwald)

#### Release 64

Released: 2002-07-08 2212 EDT
Committed to XFree86 CVS: not yet
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-11
Download source: no longer distributed
Changes:

- winconfig.c, winconfig.h, winmsg.c, winmsg.h, InitOutput.c, winkeybd.c - Add support for using XF86Config-style configuration files. (Alexander Gottwald)

#### Release 63

Released: 2002-07-04 0300 EDT
Committed to XFree86 CVS: 2002-07-06 0959 UTC
Basis: Release 62
Cygwin setup.exe package: XFree86-xserv-4.2.0-10
Download source: no longer distributed
Changes:

- General - Fix the broken build that was Release 62. Release 62 crashed during its startup sequence for anyone unfortunate to download it before it was pulled from distribution. (Harold Hunt)
- win.h, winmisc.c, winpfbdd.c, winshadgdi.c, winshaddd.c, winshadddnl.c, winscrinit.c - Reimplement the stride pixel calculations that were removed in Release 61. The ``stride'' is the number of whole pixels that fit in a padded scan line; in other words, the stride is the number of bits in a scanline divided by the number of bits used to store each pixel (i.e., bits per pixel). We cannot pass the simple pixel width of the window to the fb initialization routines because sometimes we have invisible pixels on the scanline that must be accounted for (e.g., when the number of pixels in the width is odd). Had anyone seen this bug they would have seen a server that drew things diagonally (only -engine 2 seemed to exhibit this problem). (Harold Hunt)
- winshaddd.c, winshadddnl.c - Add support for the `-clipupdates num_boxes' parameter when using `-engine 2' or `-engine 4', in addition to the previously supported `-engine 1'. Once again, I can't tell if this feature has any benefit whatsoever. I need some volunteers to perform rigorous testing with different values for the threshold at which point updated boxes are collected into a clipping region. One may find the ``x11perf'' program beneficial here, as well as ``glxgears'', which gives a frames per second reading. Of course, it would be most beneficial to have performance comparisons for a few different machine types (processors, memory amounts, video cards, PCI or AGP, etc.). Update clipping is off by default. (Harold Hunt)
- win.h, InitOutput.c, winengine.c, winshaddd.c, winshadddnl.c, winshadpfb.c - Change the DirectDraw module handle and function pointers from screen privates to global variables. Loading the DirectDraw module and function pointers needs to be done only at server initialization, not at screen initialization. Similarly, we don't need to unload and reload DirectDraw for each screen when the server regenerates; rather, we need only unload DirectDraw when the server is shutting down. This cleanup makes it much for difficult to misunderstand what is going on with the DirectDraw module handle and function pointers. (Harold Hunt)
- win.h, InitOutput.c, winengine.c - Detect the supported engines only once at startup, rather than once per screen initialization. Rework the supported engine detection logic to assume that the DirectDraw module handle and function pointers have already been loaded if they are present and working. (Harold Hunt)
- win.h, InitOutput.c, winwndproc.c - Add a global module handle for ``comctl32.dll'' and ``_TrackMouseEvent''. Try to get a pointer to the _TrackMouseEvent function and print an informational message if we cannot find the function, suggesting to the user that they install Internet Explorer 3.0 or greater if they have not already done so. We also set the _TrackMouseEvent function pointer to point to the no operation function if we can't find a valid function so that any calls to the function pointer will do nothing (instead of trying to dereference a NULL and crashing). Mouse pointer hiding/showing may be messed up when we don't have _TrackMouseEvent, but the user can remedy that by following the advice in the information message. Remove our compile-time link to comctl32.dll. (Harold Hunt)
- InitOutput.c, winshadgdi.c, winshaddd.c, winshadddnl.c - Add an `-emulatepseudo' parameter that causes a depth 8 PseudoColor visual to be created in TrueColor modes, with the same limitations described in the Release 62 change log. PseudoColor emulation is off by default. (Harold Hunt)
- winscrinit.c - Add special handling for 8 bits per pixel screens when calculating the depth of the screen. An 8 bit per pixel screen has no color masks so we can't sum up the bits in the color masks. Fortunately, we know that an 8 bit per pixel screen is always depth 8. (Harold Hunt)

#### Release 62

Released: 2002-07-02 0026 EDT
Committed to XFree86 CVS: 2002-07-06 0959 UTC
Basis: Release 61
Cygwin setup.exe package: XFree86-xserv-4.2.0-9
Download source: no longer distributed
Changes:

- winscrinit.c, InitOutput.c, winshadgdi.c, winshaddd.c, winshadddnl.c - Correctly calculate the number of bits used to store color information by counting the total number of bits that are set in our color masks. This should fix problems introduced in Release 61 for users with 24bpp or 15bpp displays. (Alan Hourihane, Harold Hunt)
- InitOutput.c, winshadgdi.c, win.h - Add support for an experimental parameter, that only works with `-engine 1', that combines a specified number of boxes in the shadow update region into a GDI clipping region then performs a single Blt operation for the entire shadow framebuffer to the primary framebuffer, using the clipping region to constrain the Blt to the updated area. You specify the number of boxes in a region that should be combined into a clipping region using the new `-clipupdates num_boxes' parameter; by defaul the feature is disabled, which is done by setting num_boxes to zero. (Harold Hunt)
- winshadgdi.c, winshaddd.c, winshadddnl.c - Add a call to initialize an 8bpp PseudoColor visual on top of our TrueColor visual when WIN_EMULATE_PSEUDO_SUPPORT is enabled; by default, WIN_EMULATE_PSEUDO_SUPPORT is not enabled. This new PseudoColor visual will allow programs such as Magic 7.1 to display when Cygwin/X is running with a TrueColor default visual; however, the colors are all messed up. It may be possible to fix the colors by making changes to our local colormap handling funtions (and enabling them in TrueColor mode, which they currently are not), or by making some change to FB and/or SHADOW. This feature is being added now because Cygwin/X doesn't crash when we call miSetVisualTypesAndMasks a second time; I must be doing something differently now that fixed the crashing (probably the bpp and depth handling fixes). (Harold Hunt)
- winshadgdi.c, winshaddd.c, winshaddnl.c - Add a #if conditional to winInitVisuals* that calls miSetVisualTypesAndMasks or fbSetVisualTypesAndMasks depending on if XFree86Server is defined. Currently this isn't useful because Mesa (similar to Open GL) doesn't work when XFree86Server is undefined. I'll leave this here for now for future reference. (Harold Hunt)

#### Release 61

Released: 2002-06-27 0020 EDT
Committed to XFree86 CVS: 2002-07-06 0959 UTC
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-8
Download source: no longer distributed
Changes:

- General - Fix the KDE 3.0 alpha-channel icon bug that appeared only when running Windows at 32 bits per pixel. Many more details below. (Alan Hourihane)

- General - pScreenInfo->dwDepth used to refer to the depth that the user specified with the -depth parameter or the depth returned by GetDeviceCaps (BITSPIXEL) and pScreenInfo->dwBPP used to refer to the bits of color per pixel. For example, running Windows at 32 bit color would mean dwDepth == 32 and dwBPP == 24. It turns out that this was exactly backwards from what it should be.

  The dwDepth variable new refers to the color ``depth'' of a pixel, that is, the number of bits that make up the color specification for a pixel. For example, a 32 bit pixel uses 24 bits to represent color plus an 8 bit pad for alignment purposes and a 16 bit pixel can use 15 or 16 bits to represent color. The dwBPP variable now refers to the bits used to store each pixel, that is, the number of bits that each pixel occupies in the framebuffer memory. For example, a 32 bit pixel occupies 32 bits in the framebuffer memory while a 24 bit pixel occupies 24 bits in the framebuffer memory (the former pixels are 32 bit aligned, while the latter pixels are called ``packed'' because the pixels are not aligned and any given pixel may actually be stored in two separate 32 bit units).

  The meaning of dwDepth and dwBPP was corrected throughout the source code, touching files such as wincmap.c, winscrinit.c, InitOutput.c, winshadddnl.c, winshaddd.c, winshadgdi.c, winnativegdi.c, winpfbdd.c, and win.h. Also, we modify the depth 24 pixmap format at runtime to use 24 bits per pixel, instead of 32, when Windows is running in 24 bit color; this matches the Windows pixel format when running in 24 bit color.

  The end result of all of this is that we now no longer report that we have a depth 32 visual, as depth 32 visuals do not exist. What we were previously calling a depth 32 visual is actually a depth 24 visual with a different bits per pixel. Advertising a proper visual when running Windows at 32 bit color corrects the problem of KDE 3.0 not displaying icons or text with alpha channels. Alan did the magical part of discovering the underlying problem, I did the grunt work of cleaning the code and making sure that all of the corner cases were still handled. (Alan Hourihane, Harold Hunt)

- winshaddd.c, winshadddnl.c, winshadgdi.c, win.h, winscrinit.c - Remove the essentially unused dwStride and dwStrideBytes variables from the ScreenInfoRec. (Harold Hunt)
- winshaddd.c, winshadddnl.c - In winBltExposedRegionsShadowDD* () we try to restore the primary DirectDraw surface up to WIN_REGAIN_SURFACE_RETRIES (currently 1) times when a bit block transfer of the exposed regions fails. This corrects the case where switching a notebook from its internal display to an external display (or vice versa) would cause the Cygwin/X window to blank and fail to redraw itself until the Cygwin/X window was minimized and then restored. (Harold Hunt)

#### Release 60

Released: 2002-06-22 0007 EDT
Committed to XFree86 CVS: 2002-07-06 0959 UTC
Basis: XFree86 CVS
Cygwin setup.exe package: XFree86-xserv-4.2.0-7
Download source: no longer distributed
Changes:

- Do a clean before rebuilding the server to ensure that the RENDER extension is compiled in and enabled. The RENDER extension is now reenabled. Unfortunately, the RENDER extension is the cause of the display problem with KDE 3.0 icons that have alpha channels at a depth of 32 bits per pixel. It was previously thought that the LAYER and RANDR extensions were causing the problem because a rebuild of the server with RENDER enabled did not actually have RENDER enabled, thus making it seem that RENDER was not causing the problem. (Harold Hunt)
- wincreatwnd.c - Remove a seemingly erroneous return from winCreateBoundingWindowFullScreen when we are using the Shadow GDI engine. This return was before we called UpdateWindow and BringWindowToTop. This seems to have snuck in at some point during merging of my local 4.2.0 and main trees. (Harold Hunt)

#### Release 59

Released: 2002-06-14 0826 EDT
Committed to XFree86 CVS: 2002-06-17 0804 UTC
Basis: Release 58
Cygwin setup.exe package: XFree86-xserv-4.2.0-6
Download source: no longer distributed
Changes:

- win.h, xc/config/cf/cygwin.cf - Stop building RANDR and disable Cygwin/X's LAYER support. These two extensions were causing KDE 3.0 icons with alpha channels to not display. RENDER is still enabled. (Harold Hunt)
- xc/programs/Xserver/os/osinit.c - Don't close the stdin, stdout, stderr file handles on Cygwin. We are no longer a command-line application so stdin, stdout, and stderr point to our first three file handles, rather than to their usual locations. This keeps the log file from being closed when you run XWin.exe with 'start XWin.exe'. (Stuart Adamson)
- winwndproc.c - Call TrackMouseEvent to setup tracking for the WM_MOUSELEAVE message. When we see a WM_MOUSELEAVE message we show the cursor if we are hiding it. This will prevent cursors from disappearing when using the -lesspointer parameter. (Harold Hunt)

#### Release 58

Released: 2002-06-13 0102 EDT
Committed to XFree86 CVS: 2002-06-17 0804 UTC
Basis: Release 57
Download source: no longer distributed
Changes:

- InitOutput.c, XWin.man, win.h, winwndproc.c - Add the -lesspointer command line parameter which causes Cygwin/X to hide the Windows mouse cursor when the mouse is over any Cygwin/X window (whether activated or not). (Stuart Adamson)

#### Release 57

Released: 2002-06-08 2149 EDT
Committed to XFree86 CVS: 2002-06-17 0804 UTC
Basis: Release 56
Download source: no longer distributed
Changes:

- winwndproc.c - Call DefWindowProc after processing WM_NCMOUSEMOVE messages. This should fix the highlighting of the minimize and exit buttons in Windows XP. (Jehan Bing)
- winwndproc.c, win.h, winallpriv.c - Make the cursor state variable, fCursor, a static local variable in winwndproc.c/winWindowProc (), rather than a member variable in the winPrivScreenRec structure. This makes sense because the Windows cursor is either hidden or shown, as Windows does not hide or show the mouse cursor on a per-window basis. This also greatly simplifies the handling of hiding and showing the Windows mouse cursor. (Jehan Bing)

#### Release 56

Released: 2002-06-07 2235 EDT
Committed to XFree86 CVS: 2002-06-17 0804 UTC
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- InitOutput.c, win.h, wincreatewnd.c - Add a -nodecoration parameter that creates the Cygwin/X window that is the same size as the desktop, without a border. The end effect is that you can still get to the taskbar (even with Auto Hide enabled) and easily switch to other application while not giving up any screen space to the title bar, borders, etc. (Jehan Bing)
- winkeybd.c - Disregard the bogus key releases that we see when losing the focus via Alt+Tab. (Stuart Adamson)
- win.h, winkeybd.h, winkeybd.c, winwndproc.c - Release all pressed keys when the X server loses the keyboard focus. (Stuart Adamson)
- InitOutput.c - Fix a typo that set iE3BTimeout to TRUE instead of the specified timeout parameter when using the 3 button mouse emulation timeout parameter with a single X screen. (Stuart Adamson)
- wincursor.c - See if we are the foreground window before warping the Windows cursor position. This fixes the new bug that occurs if you launch Cygwin/X and give another application the focus. In that case the Windows mouse cursor would still jump to the center of the screen, even though the Cygwin/X window was not active. (Harold Hunt)
- winkeybd.h - Fix the bug where pressing both shift keys then releasing them both would still cause all keyboard input to be shift-modified. The fix was to set the fixup for the non-extended VK_SHIFT key to KEY_ShiftL. (Harold Hunt)
- wincreatewnd.c - Pass SW_SHOWNORMAL instead of SW_HIDE to ShowWindow when running a DirectDraw engine in fullscreen mode. This fixes the bug where launching Cygwin/X then giving another application the focus before the Cygwin/X window was displayed would cause Cygwin/X to never display a window or register a window handle on the Windows taskbar. (Harold Hunt)

#### Release 55

Released: 2002-04-04 2206 EST
Committed to XFree86 CVS: 2002-04-11 0825 UTC
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- wincursor.c - Try to fix winPointerWarpCursor by offsetting by the coordinates of the Cygwin/X client area upper left-hand corner. (Harold Hunt)

#### Release 54

Released: 2002-04-03 2033 EST
Committed to XFree86 CVS: 2002-04-11 0825 UTC
Basis: XFree86 4.2.0 CVS
Download source: no longer distributed
Changes:

- wincursor.c - Attempt to make WarpCursor function correctly by adding function winWarpCursor. The new function calls SetCursorPos () with the x and y coordinates passed to winWarpCursor. Hopefully this works. (Harold Hunt)
- winkeybd.c - Change winKeybdBell () to call MessageBeep (MB_OK) instead of Beep (0, 0). Beep () uses the PC speaker on Windows NT/2000, which isn't desireable. It also seems that Beep () may have been causing freezes for some users. (Harold Hunt)

#### Release 53

Released: 2001-11-11 1500 EST
Committed to XFree86 CVS: 2001-11-12 0348 EST
Basis: Release 52
Download source: no longer distributed
Changes:

- winkeybd.c - winRestoreModeKeyStates () - This function is supposed to handle the case where the user switches out of Cygwin/X, changes the state of a mode key (i.e. Num Lock), then returns to Cygwin/X. Back in May I replaced a macro, WIN_XOR, with the C binary operator ^. At the time I didn't realize that I was using the binary operator instead of the logical operator. The end result is that some of the mode keys were toggled each time that Cygwin/X gained and lost focus, regardless of whether the key state had changed. The WIN_XOR macro is being used again, and I have added a note as to why the C xor operator cannot be used. This has been broken for months, I'm really surprised that no one noticed it yet.
- winwndproc.c - winWindowProc () - Move the mode key state save/restore function calls to the WM_KILLFOCUS and WM_SETFOCUS messages, from the WM_ACTIVATE message.

#### Release 52

Released: 2001-11-11 1200 EST
Committed to XFree86 CVS: 2001-11-11 1746 EST
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- InitOutput.c - ddxProcessArgument () - Add an undocumented parameter, -ignoreinput, to allow programmers to see how the non-NativeGDI engines behave when they do not receive input events.
- win.h - Remove a duplicate declaration for winRestoreModeKeyStates ().
- win.h - Add defines for ABS_AUTOHIDE and ABS_ALWAYSONTOP that should be in Cygwin's w32api shellapi.h
- winengine.c - New file. Move winDetectSupportedEngines () and winSetEngine () here from winscrinit.c
- wincreatewnd.c - New file. Move winCreateBoundingWindowFullScreen () and winCreateBoundingWindowWindowed () here from winscrinit.c
- wincreatewnd.c - Add a function, winAdjustForAutoHide (), to detect the location of auto-hide Window's TaskBars then back away one pixel from those edges of the screen to allow the TaskBars to popup when the mouse is moved over them.
- winkeybd.c - winKeybdReleaseModifierKeys () - Don't check which modifier keys are down when we lose focus, just release them all; this doesn't have any adverse effect and it makes the code simpler.
- winkeybd.c - Add a function, winSendKeyEvent () to simplify sending a keystroke event.
- winscrinit.c - Move winPaintBackground () to winmisc.c
- winwndproc.c - winWindowProc () - Remove duplicate checks for pScreenPriv == NULL.
- winwndproc.c - winWindowProc () - Only reload the privates property when the window handle has changed. I think I did this correctly this time around.
- winwndproc.c - winWindowProc () - WM_HOTKEY - Create an engine specific function to handle the Alt+Tab hotkey. Move the Primary FB engine's functionality into that new engine specific function. Set all other engine's function to perform no operation.
- winwndproc.c - winWindowProc () - Change the check on input events from pScreenInfo->dwEngine == WIN_ENGINE_NATIVE_GDI to pScreenInfo->fIgnoreInput.

#### Release 51

Released: 2001-10-30 1000 EST
Committed to XFree86 CVS: 2001-11-01 0724 EST
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- The NativeGDI engine now correctly draws the familiar X background on startup.
- The NativeGDI engine is now allowed to continue past the point of drawing the X background, as a few needed spans operations are now implemented.
- Check out the NativeGDI engine yourself by launching 'XWin -engine 16'. You'll see a series of message boxes telling you what operations have been completed and /tmp/XWin.log will have over one thousand lines describing those operations. Note: The NativeGDI engine doesn't do anything useful yet, other than drawing the background and a primitive cursor.

#### Release 50

Released: 2001-10-20 1622 EDT
Committed to XFree86 CVS: 2001-10-22 1122 EDT
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- General - The NativeGDI engine can now create the familiar X background pattern that is used to fill the initial X Server screen. However, an all white pattern, instead of the correct pattern, is being used to fill the server screen. I can't find the mistake in winfillsp.c, wingetsp.c, or winsetsp.c, so I'm making this release to see if anyone can find the mistake.
- winwndproc.c/winWindowProc () - Replace #if !WIN_NATIVE_GDI_SUPPORT checks with checks for pScreenInfo->dwEngine == WIN_SERVER_NATIVE_GDI. Certain sections of winWindowProc (), such as mouse input, cannot yet be processed by the NativeGDI engine. Prohibiting user input causes the server startup process to be the same every time, which makes debugging possible.
- win.h/WIN_NATIVE_GDI_SUPPORT - Set to YES, again. This works now because we are no longer omitting sections of winwndproc.c (see above).
- win.h/DEBUG_MSG () - Make the macro accept a format string and a variable list of data parameters in a similar manner to printf (). DEBUG_MSG () sends a text message to the Win32 API's MessageBox () function.
- winpixmap.c/winCreatePixmap () - Call winnativegdi.c/winCreateDIBNativeGDI () for device independent bitmap (DIB) creation.
- winnativegdi.c/winCreateDIBNativeGDI () - Setup a simple black and white color table for monochrome DIBs.
- win.h - Remove duplicate #include of stdio.h
- win.h - Move debugging message macros to after stdio.h in included.
- win.h/winPrivPixmapRec - Change the pixmap bits pointer from void * to BYTE *.
- winfillsp.c, wingetsp.c, winsetsp.c, wingc.c - Don't select the drawable bitmap in wingc.c, rather, select and deselect the drawable bitmap in the function that operates upon it. A given bitmap can only be selected into one device context (hdc) at a time; selecting bitmaps in wingc.c/winValidateGC () could cause a bitmap to be selected into more than one hdc at a time which would cause graphics operations to fail.
- winfillsp.c, winsetsp.c - Check for a failure from SelectObject () when selecting bitmaps into a device context; this is a sanity check to make sure that a bitmap was deselected after a previous operation.
- winwndproc./winWindowProc (), winshaddd.c/winCloseScreenShadowDD (), winshadddnl.c/winCloseScreenShadowDDNL (), winshadgdi.c/winCloseScreenShadowGDI (), winpfbdd.c/winCloseScreenPrimaryDD () - Remove #if 0'd code for clipboard chain functionality that was moved to the xwinclip program.

#### Release 49

Released: 2001-10-03 0056 EDT
Committed to XFree86 CVS: 2001-10-04 1603 EDT
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- Send ErrorF () output to XWin.log
- Prevent XWin.exe from opening a DOS box on launch
- Enable FatalError () vendor specific function, currently does nothing
- Cleanup winkeybd.c/winTranslateKey (). Replace switch statement with table lookup; table stored in new file winkeybd.h
- Force ShadowGDI engine when Windows color depth is 8 bits and !FullScreen

#### Release 48

Released: 2001-09-02 1252 EDT
Committed to XFree86 CVS: not yet
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- Revert the default screen initialization process to pre-Release 46 functionality. Document, with comments, what is happening so that I don't accidentally mess it up again.
- Remove the clipboard support introduced with Release 46, as this functionality is now handled by xwinclip. xwinclip will contain all clipboard support until the XWin.exe headers are rewritten to prevent collisions between the X client headers and the X Server headers.
- Remove the Release 47 binary from the servers to prevent people from downloading it, as it is quite broken.

#### Release 47

Released: 2001-08-31 0115 EDT
Committed to XFree86 CVS: not yet
Basis: Release 46
Download source: no longer distributed
Changes:

- Fix broken argument processing in Release 46 when no -screen parameter was passed.
- Remove the Release 46 binary from the servers to prevent people from downloading it, as it is quite broken.

#### Release 46

Released: 2001-08-30 1830 EDT
Committed to XFree86 CVS: not yet
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- Open the Windows clipboard and dump new clipboard text to XA_CUT_BUFFER0 whenever the Windows clipboard changes. This provides rudimentary one-way Windows to X clipboard integration.
- Remove cruft used to call winInitializeDefaultScreens () before our OsVendorInit () function was working properly.
- Add xc/programs/Xserver/hw/xwin/winerror.c which contains a function that we can use to customize the ErrorF () output. We will use this to redirect ErrorF () messages to a file so that we can start XWin.exe without a console.

#### Release 45

Released: 2001-08-28 1734 EDT
Committed to XFree86 CVS: Prior to release
Basis: XFree86 CVS
Download source: no updates to hw/xwin, only to miext/layer
Changes:

- Transposed arguments in layer CopyClip wrapper caused Mozilla to break. (Keith Packard)

#### Release 44

Released: 2001-08-15 1958 EDT
Committed to XFree86 CVS: 2001-08-16 0424 EDT
Basis: Release 43
Download source: no longer distributed
Changes:

- Bump the client connection limit from 32 to 1024 by passing the square of getdtablesize () to setdtablesize ().

#### Release 43

Released: 2001-08-13 1915 EDT
Committed to XFree86 CVS: 2001-08-16 0424 EDT
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- Fix, finish, and enable miext/layer support. (Harold Hunt)

#### Release 42

Released: 2001-08-04 1347 EDT
Committed to XFree86 CVS: 2001-08-06 0703 EDT
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- Add support to handle Ctrl+Alt+Backspace as shutdown signal. (Alexander Gottwald)
- Add command line options to enable/disable each of the two key combos that cause the server to shutdown. (Alexander Gottwald)
- Disable the -ansi build flag. Causes the 'hypot' function to be correctly prototyped, fixing some crashes. (Brian Genisio, Alan Hourihane)
- Fix a namespace conflict in xc/lib/font/Type1/regions.c by renaming 'infinity' to '_infinity'. (Alan Hourihane)

Usage:

- -[no]winkill enables/disables the Alt+F4 server shutdown key combo.
- -[no]unixkill enables/disables the Ctrl+Alt+Backspace server shutdown key combo.
- Default behavior:
  - Alt+F4: enabled
  - Ctrl+Alt+Backspace: disabled

#### Release 41

Released: 2001-07-26 1608 EDT
Committed to XFree86 CVS: 2001-07-31 0547
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- Abstract the GDI PseudoColor handling into a set of functions for each engine.
- Add support for PseudoColor visuals when using DirectDraw engines in fullscreen 8 bit color modes. Support may never be added for using PseudoColor visuals with DirectDraw engines in windowed mode, as the DirectDrawPalette object has the first ten and the last ten colors reserved in windowed mode. Thus, adding PseudoColor support for windowed DirectDraw modes would be rather difficult.
- Fall back on StaticColor if running a DirectDraw engine in windowed mode.
- Turn off WIN_LAYER_SUPPORT for now, as it was causing the server to crash on exit when running in 8 bit color modes.
- Remove the WIN_PSEUDO_SUPPORT build flag; it is no longer used because the PseudoColor support is stable.

#### Release 40

Released: 2001-07-15 1615 EDT
Committed to XFree86 CVS: 2001-07-25 1031 EDT
Basis: Release 39
Download source: no longer distributed
Changes:

- Remove tests for the return value of MapWindowPoints (), as a return value of zero doesn't necessarily mean that the function failed. Rather, a return value of zero can simply indicate that the from window and to window have the same upper-left hand corner.
- Test the return value of pwinCreateBoundingWindow () in winFinishScreenInitFB (), return FALSE if pwinCreateBoundingWindow () fails.

#### Release 39

Released: 2001-07-02 0503 EDT
Committed to XFree86 CVS: 2001-07-25 1031 EDT
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- Enable OsVenderInit () in hw/xwin/InitOutput.c by fixing a type in the DDXOSINIT flag in xc/config/cf/cygwin.cf. There as a 'D' missing from the flag. (Harold Hunt)
- Add a default screen in OsVenderInit () if no screen parameters were processed by hw/xwin/InitOutput.c/ddxProcessArgument (). This allows Cygwin/X to startup without any parameters, such as what will happen if ia user runs /usr/X11R6/bin/X. (Harold Hunt)

#### Release 38

Released: 2001-06-29 1717 EDT
Committed to XFree86 CVS: 2001-07-02 0538 EDT
Basis: Release 37
Download source: no longer distributed
Changes:

- Pick up the value of the monitorResolution global variable that is set by passing the '-dpi' parameter to XWin.exe. (Harold Hunt)
- Add file winlayer.c, which provides the source code framework, and intial implementations for RandR and miext/layer support. Unfortunately, the layer support doesn't work correctly when it is enabled. The server just draws a black screen when layer support is enabled. I would appreciate it if someone with layer experience or some extra time on their hands would look into finishing this. (Harold Hunt)
- Make PseudoColor, as opposed to StaticColor, the default visual class when running the GDI engine at 8 bits per pixel. (Harold Hunt)

#### Release 37

Released: 2001-06-26 0001 EDT
Committed to XFree86 CVS: 2001-07-02 0538 EDT
Basis: XFree86 CVS
Download source: no longer distributed
Changes:

- PseudoColor - Fixed the strange colors when redrawing portions of the Cygwin/X window that have been covered then exposed by another Window. (Harold Hunt)
- Stop creating a fake PseudoColor visual in when using a TrueColor display. Emulating PseudoColor on TrueColor is a long standing problem and will be handled by the RandR extension when it stabilizes. (Harold Hunt)
- Move the palette realization code into an engine specific function. (Harold Hunt)
- Move the screen redrawing code into an engine specific function. (Harold Hunt)

#### Release 36

Released: 2001-06-24 1656 EDT
Committed to XFree86 CVS: 2001-07-02 0538 EDT
Basis: Release 35
Download source: no longer distributed
Changes:

- Changed the PseudoColor whitePixel location from 255 to 1, which allows Magic 7.1 to use the default colormap, as opposed to creating its own. This prevents colormap changes when moving into and out of the Magic window, which keeps the window viewable when the focus is in another X window. (Harold Hunt)
- Brought the experimental Native GDI support back from the dead by setting up Pixmap privates and GC privates so that the global device context handles could be gotten rid of. Actually, the global handles were long since gone, as the code that used them was #if 0'd out. I managed to change the drawing logic in the process, so the code now only draws a white window, whereas before it was drawing the X hatched background. (Harold Hunt)
- Rewrote the winFinishScreenInitNativeGDI () procedure so that it defers most of the default setup work to miScreenInit (). (Harold Hunt)
- Added winnativegdi.c, which includes functions to fit the Native GDI support into the current engine framework. (Harold Hunt)

#### Release 35

Released: 2001-06-23 2225 EDT
Committed to XFree86 CVS: 2001-06-25 0703 EDT
Basis: Release 34
Download source: no longer distributed
Changes:

- PseudoColor support is now enabled, albeit with lots of caveats. (Harold Hunt)
  - PseudoColor is only supported by the GDI blitter (-engine 1), so you have to pass the '-engine 1' parameter to XWin.exe.
  - PseudoColor is only supported when Windows is running in 256 color mode (8 bit color); the GDI engine cannot change the Windows display depth, so you must be running Windows in 256 color mode before starting XWin.exe.
  - There are plenty of situations that cause the colors displayed by Cygwin/X to become garbled.
  - Release 35 has been tested only on Windows 2000. There is no reason why Release 35 should not run on the other versions of Windows, but I would appreciate some quick feedback on whether Release 35 functions on Windows 95, 98, Me, and NT 4.0 when running Windows in 256 color mode and passing '-engine 1' to XWin.exe.

#### Release 34

Released: 2001-06-21 1500 EDT
Committed to XFree86 CVS: 2001-06-25 0703 EDT
Basis: Release 33
Download source: no longer distributed
Changes:

- Add desired display depth vs. current display depth as criteria for whether to change the video mode when using a DirectDraw engine in fullscreen. (Harold Hunt)
- Add experimental support for a real PseudoColor visual. Toggled on and off with WIN_PSEUDO_SUPPORT in win.h. (Harold Hunt)
- Add DirectDraw return values to error messages for failed function calls in winshaddd.c and winshadddnl.c. (Harold Hunt)
- The StaticColor colormap only had 20 colors when using the GDI engine. Create the colormap with all 256 colors in the default GDI palette, and set the shadow DIB palette to the default GDI palette so that all colors in the colormap display correctly. In other words, fix the StaticColor support when using the GDI engine. (Harold Hunt)

#### Release 33

Released: 2001-06-19 2255 EDT
Committed to XFree86 CVS: 2001-06-25 0703 EDT
Basis: Release 32
Download source: no longer distributed
Changes:

- Add warning message if the requested DIB or DirectDraw surface will be larger than 16 MB. There is a 16 MB size limit for DIBs in Windows 95, 98, and, presumably, Me. For more information, see MSDN Library->Platform SDK->Graphics and Multimedia Services->Windows GDI->Bitmaps->Bitmap Reference->Bitmap Functions->CreateDIBitmap. (Harold Hunt)
- Re-disable UseSmartScheduler, and add a note to xc/config/cf/cygwin.cf that UseSmartScheduler has terrible performance on Cygwin. (Harold Hunt)
- Add processing for the '-screen' command to handle 'WxH', if it is present. This is in addition to the new 'W H' format. (Harold Hunt)
- Grab a new ddraw.h header from the Wine project. The new header has several fixes to function parameter types, thus preventing compilation warnings, and a few fixes to some structures that may have been causing DirectDraw Surface creation problems. (Harold Hunt)
- Add a check for a NULL hardware device context being returned by BeginPaint in the winBltExposedRegions functions. (Harold Hunt)
- Add error messages and extra sanity checks to winBltExposedRegions functions. (Harold Hunt)
- Remove the ShadowWindowProc functions, as the Cygwin/X ShadowUpdateProcs do not need ShadowWindowProcs. (Harold Hunt)

#### Release 32

Released: 2001-06-17 2256 EDT
Committed to XFree86 CVS: 2001-06-25 0703 EDT
Basis: Release 31
Changes:

- Process keyboard message repeat counts. The repeat count is usually 1 on fast or lightly loaded machines. (Harold Hunt)
- Disable processing of the left and right Windows keys, as they cause focus to be returned to Windows. Some users were reporting that this caused endless keypresses to show up in Cygwin/X. (Harold Hunt)

#### Release 31

Released: 2001-06-15 1953 EDT
Committed to XFree86 CVS: 2001-06-25 0703 EDT
Basis: XFree86 CVS
Changes:

- A set of recent releases changed the '-screen n WIDTHxHEIGHTxDEPTH' parameter to '-screen n width height' and added the '-depth color_bit_depth' parameter. The '-depth color_bit_depth' parameter is only used in fullscreen mode when using a DirectDraw engine. Some of that information was missing from previous change log entries. (Harold Hunt)
- Tell X Server to quit when Alt-F4 key combination is pressed. (Harold Hunt)
- Don't call IDirectDraw_SetDisplayMode if the desired mode is the same as the current mode. This makes fullscreen server startup and switching back and forth between the server and Windows much faster. This also causes the current refresh rate to be used by default in fullscreen mode, rather than the minimal refresh rate that is chosen by DirectDraw when you change the display mode but do not specify a refresh rate. Translation: yay! (Harold Hunt)
- Added '-refresh rate_in_Hz' command line parameter to specify a refresh rate. Specifying an invalid refresh rate will cause the X Server to abort on startup. (Harold Hunt)
- Switch from DirectDraw to DirectDraw2 to support changing the refresh rate. The minimum DirectDraw version required to date has been DirectDraw3, which is not affected by this release; therefore, I don't foresee anyone being forced to upgrade to a new version of DirectDraw. (Harold Hunt)

#### Release 30

Released: 2001-06-13 0027 EDT
Committed to XFree86 CVS: 2001-06-15 0411
Basis: XFree86 CVS
Changes:

- Send release messages for modifier keys (Alt, Ctrl, and Shift) to the X Server when Cygwin/X loses the Windows keyboard focus. This fixes the keyboard problems experienced when locking an NT workstation by pressing Ctrl-Alt-Del when Cygwin/X had the keyboard focus. (Harold Hunt)

#### Release 29

Released: 2001-06-07 2034 EDT
Committed to XFree86 CVS: 2001-06-08 0408 EDT
Basis: XFree86 CVS
Changes:

- Be a little more clever about handling cursor hiding/unhiding when the server has regenerated itself. Server regeneration happens when you log off of an XDMCP session and are subsequently presented with a new XDMCP login screen. This fix addresses the server error message, "Couldn't get last screen privates". (Harold Hunt)

#### Release 28

Released: 2001-06-06 1427 EDT
Committed to XFree86 CVS: 2001-06-06 1406 EDT
Basis: Release 27
Changes:

- Detect when the cursor has crossed into a new X screen without causing a Windows activation event; notify the cursor handling code that the transition has happened. (e.g. Launch two screens, place them side by side, then move the cursor between them; previously, the mouse events from the second screen would cause mouse movement on the first screen, not on the second screen.) (Harold Hunt)
- Improve cursor hiding/unhiding when using multiple screens (e.g. 'XWin -screen 0 640x480 -screen 1 640x480'). Cursor hiding/unhiding with multiple screens is not perfect yet, but using multiple screens is now much more bearable. (Harold Hunt)

#### Release 27

Released: 2001-06-05 2009 EDT
Committed to XFree86 CVS: 2001-06-06 1406 EDT
Basis: Release 26
Changes:

- Added a debug message to display the value returned by a failed call to IDirectDraw_SetDisplayMode ().

#### Release 26

Released: 2001-06-05 0723 EDT
Committed to XFree86 CVS: 2001-06-06 1406 EDT
Basis: XFree86 CVS
Changes:

- Try installing a PseudoColor visual after the real visual to see if this helps programs that require an 8 bit PseudoColor visual. Try running such programs at TrueColor depths (bit depth >= 15) and at StaticColor (bit depth == 8). (Harold Hunt)

#### Release 25

Released: 2001-06-05 0335 EDT
Committed to XFree86 CVS: 2001-06-05 0614 EDT
Basis: Release 24
Changes:

- Added support for 8 bit display modes in both the GDI and DirectDraw based server engines! Currently, 8 bit mode is handled using a StaticColor visual, which means that the values in the color palette cannot be changed by X clients at runtime. That should be okay for most people, as the primary purpose of 8 bit display mode support is to ensure that new users have a good first impression of running Cygwin/X; it is likely that most new users will eventually move on to higher color modes. (Harold Hunt)
- Verify that the desired or current display depth is in the list of supported depths when starting the server. This is now a mostly useless feature, due to 8 bit mode support. (Harold Hunt)

#### Release 24

Released: 2001-06-03 2030 EDT
Committed to XFree86 CVS: 2001-06-05 0614 EDT
Basis: XFree86 4.1.0
Download binary: no longer distributed
Changes:

- Remove depth from '-screen n WxHxD' parameter, now the parameter is '-screen n WxH'. (Harold Hunt)
- Add optional '-depth n' parameter, only used with DirectDraw engines in fullscreen mode. (Harold Hunt)
- Remove unused '-linebias n' parameter. (Harold Hunt)
- Remove unused '-blackpixel n' parameter. (Harold Hunt)
- Remove unused '-whitepixel n' parameter. (Harold Hunt)
- Normalize naming of a few global variables. (Harold Hunt)
- Replace lingering fprintf ()'s with ErrorF ()'s. (Harold Hunt)
- Move #include of atKeynames.h from win.h to winkeybd.c (The header is only needed in winkeybd.c). (Harold Hunt)
- Remove BuildDPMS cruft from hw/xwin/Imakefile, as display power management will *always* be handled by Windows, not by X. (Harold Hunt)
- Remove BuildDPMS cruft from Xserver/Imakefile. (Harold Hunt)
- General cleanup and consolidation of Xserver/Imakefile #if XWinServer section. (Harold Hunt)

#### Release 23

Released: 2001-05-07 0309 EDT
Committed to XFree86 CVS: 2001-05-08 0415 EDT
Basis: Release 22
Download binary: no longer distributed
Changes:

- Added 3 button mouse emulation support. (Alexander Gottwald, Harold Hunt)
- Removed extraneous text following an #endif from winshadgdi.c (Harold Hunt)
- Pulled mouse button handling out of winwndproc.c, deposited said code into winmouse.c. (Harold Hunt)

#### Release 22

Released: 2001-05-01 1908 EDT
Committed to XFree86 CVS: 2001-05-01 2046 EDT
Basis: Release 21
Download binary: no longer distributed
Changes:

- Pulled AltGr handling out of winwakeup.c/winWakeupHandler (), deposited said code into winkeybd.c/winIsFakeCtrl_L (); this function is now called from winwndproc.c/winWindowProc (). Thanks to Alexander Gottwald for showing me the GetMessageTime () function in his 3 button emulation patches; I did not know about this function previously. (Harold Hunt)
- Some calls to ReleaseDC () had the hdc parameter in the wrong position; thus, an hdc was being leaked. (Alan Hourihane, Harold Hunt)
- Fixed warnings on some calls to DirectDrawCreate () and IDirectDraw_CreateSurface (). (Alan Hourihane, Harold Hunt)
- Pulled engine specific WM_ACTIVATEAPP handling out of winwndproc.c/winWindowProc (). Created a new engine dependent function to handle application activation/deactivation. (Harold Hunt)
- Fixed some coding and commenting style inconsistencies. (Harold Hunt)
- Fix Xrender extension by adding a call to miSetPixmapDepths () in winscrinit.c/winFinishScreenInitFB (). (Alan Hourihane)

#### Release 21

Released: 2001-04-22 1438
Changes:

- Fixed AltGr handling by discarding Ctrl_L presses/releases with the same timestamp as an immediately following AltGr press/release. (Alexander Gottwald, Harold L Hunt II)
- Fake Ctrl_L discarding should now work on both Windows NT/2000 and Windows 95/98/Me. (Alexander Gottwald, Harold L Hunt II)

#### Release 20

Released: 2001-04-22 1325
Changes:

- Fixed AltGr handling by discarding Ctrl_L presses/releases with the same timestamp as an immediately following AltGr press/release. (Alexander Gottwald, Harold L Hunt II)

#### Release 19

Released: 2001-04-20 1648
Changes:

- Fixed 24 bpp color. (Harold L Hunt II)

  I was able to fix 24 bpp color because I finally switched my monitor to use my built in graphics card which supports 24 bpp.

  There were only two things preventing 24 bpp color from working:

  - hw/xwin/InitOutput.c/g_PixmapFormats had the wrong bitsPerPixel, 32, for 24 bit depth pixmaps. The correct bitsPerPixel for 24 bit depth pixmaps is 32.
  - hw/xwin/winshadgdi.c/winQueryRGBBitsAndMasks() cannot detect the color masks for 24 bpp; however, the color masks for 24 bpp are standardized, so I hard coded them.

#### Release 18

Released: 2001-04-12 1508
Changes:

- Fixed a file descriptor leak when the server was respawned, as when you log out of an xdmcp session; the /dev/windows file was being opened in each call to hw/xwin/InitInput.c/InitInput (), when it should only be opened on the very first call to InitInput ().
- Added a patch to cygwin.cf to cause imake to handle binmode and textmode mounts automagically.
- Applied Suhaib's patch to cygwin.rules.
- Cleaned up some cruft from winwakeup.c and winblock.c.
- Fixed dual declarations of g_winGeneration and g_winScreenPrivateIndex.
- Wrapped nonessential debugging messages in #if CYGDEBUG. Turned CYGDEBUG off by default.
- Cleaned up color mask detection in hw/xwin/winshadgdi.c/winInitVisualsShadowGDI ().
- Cleaned up some cruft in win.h.

#### Release 17

Released: 2001-04-11 1406
Changes:

- Fixed client exits causing a crash; these crashes were due to #ifdef __CYGWIN__'d code in os/connection.c, io.c, osinit.c, utils.c, and osdep.h. I haven't tracked down exactly which line(s) caused the crash, as I removed them all at once and the problem went away. The gist of the correction is that the #ifdef __CYGWIN__'d sections of code were the same as the #ifdef WIN32'd sections of code; we don't use the WIN32 define, and Cygwin has all of the functions used by the non-WIN32 sections. Basically, we weren't using a coherent mix of APIs. (Harold L Hunt II)
- Fixed, hopefully, the freeze on startup when running on Windows Me, as well as removing the 10 millisecond wakeup from WaitForSomething; the server now only wakes up when it has real events pending, or when the usual timeout of around 2 minutes has expired. (Pierre Humblet)

#### Release 16

Released: 2001-04-06 1824
Changes:

- ASCII scan codes are now used for key presses instead of Windows virtual key codes. Alexander Gottwald pointed out that I was mistaken in my assumption that virtual key codes would make Cygwin/XFree86 more compatible with foreign keyboards. Quite the contrary of my assumptions, ASCII scan codes are desired because they allow non-U.S. keyboard users to use existing modmaps. I believe that all keys, excepting AltGr, should return the correct scan code. AltGr returns the correct scan code, I believe, but it still has a problem with the ghost Control_L press/release.
- Failed blits no longer result in a call to FatalError. Failed blits are essentially ignored. However, Ctrl-Alt-Del handling is a little strange, because you have to press and release the Alt key when the server regains focus after pressing Ctrl-Alt-Del; failing to do so will cause your mouse clicks and key presses to be ignored.
- xc/programs/Xserver/Imakefile has been cleaned up and the dependency warning has been fixed.
- Keyboard related functions have been moved from InitInput.c and winwndproc.c to a new file called winkeybd.c.
- Mouse related funtions have been moved from InitInput.c to a new file called winmouse.c.
- winUpdateFBPointer has been moved from winwndproc.c to winmisc.c.
- winkeymap.h has been removed. XFree86's standard key map header and AT key names header are used in its place; those headers are xf86Keymap.h and atKeynames.h, both located in xc/programs/Xserver/hw/xfree86/common/.
- Several definitions in win.h that mirrored defintions in xf86Keymap.h and atKeynames.h have been removed.
- Removed lots of #if 0'd code.
- Got the winScreenInit/winFinishScreenInit division of labor working.
- Removed some debugging messages, placed them within if (failed)... blocks.
- Engine 8 (Primary framebuffer DirectDraw) has gone undocumented. It is still there, but it is no longer reported in the usage message. From here on I won't be supporting engine 8, nor will I be expecting/handling bug reports for it.

#### Release 15

Released: 2001-03-30 1037
Changes:

- Test 14 clobbered 32 bits per pixel support; that has been fixed.

#### Release 14

Released: 2001-03-29 1425
Changes:

- Mode key states are initialized to their current state upon server startup (NumLock, CapsLock, etc).

#### Release 13

Released: 2001-03-29 1349
Changes:

- The bitmask for detecting right and left modifier keys was incorrect.
- Right and left modifier key detection was reversed, had the mask been correct.

#### Release 12

Released: 2001-03-28 2040
Changes:

- A great developer (John Fortin) once told me that the DDLOCK_NOSYSLOCK flag for IDirectDrawSurface_Lock was not introduced until DirectDraw4, which is not available for Windows NT 4.0. Including that flag causes the surface lock to fail on NT 4.0. I removed the flag from all calls to IDirectDrawSurface_Lock.

#### Release 11

Released: 2001-03-28 1943
Changes:

- Keyboard input distinquishes between right and left Shift, Control, and Alt keys.
- Added key maps for Help, Select, Clear, and language mode switches. The language mode key codes are probably incorrect, but having them at least cause an input event will allow people to map them to the correct symbol for their language.
- Numeric keypad Enter causes an XK_KP_Enter instead of XK_Return.

#### Release 10

Released: 2001-03-26 1206
Changes:

- Restart messages, such as the one sent by the "Close Connection" button when using xdcmp, caused the server to crash, as I was not completely closing the screen resources. This has no been fixed. You can send restart messages, till your heart is content, and the Test 10 server will cheerily process them and give you a fresh server every time. I hope :)
- Neat new feature, as a consequence of 1: you can now run multiple screens in one server, for example: start XWin -screen 0 1024x768x16 -screen 1 800x600x16 start rxvt -display 127.0.0.1:0.0 -fn "Lucidia Console-12" start rxvt -display 127.0.0.1:0.1 -fn "Lucidia Console-12" start twm -display 127.0.0.1:0.0 start twm -display 127.0.0.1:0.1 Caveats: Don't try throwing in any -fullscreen parameters. There is some strange mouse behavior that I'm working on.

#### Release 9

Released: 2001-03-26 0047
Changes:

- Test 9 is the same as Test 8 except that is compiled using the XFree86 4.0.3 source code.

#### Release 8

Released: 2001-03-25 2043
Changes:

- Server engine codes changed:
  - Shadow GDI DIB is "-engine 1"
  - Shadow DD is "-engine 2"
  - Shadow DD Non Locking is "-engine 4"
  - Primary DD is "-engine 8"
- Added code to detect supported server engines.
- Added code to automatically choose the optimum supported engine. You no longer have to specify a "-engine n" parameter. However, you can suggest that the server use a particular engine with an "-engine n" parameter.
- Made a quick fix to handle the incorrect depth being passed when running the engines in windowed mode.
- Updated the "XWin -help" message with the new engine codes.
- Rearranged the internal server structure to new engines to be added more easily, as well as making the current code easier to read and maintain.
- Test 8 is built against XFree86 4.0.2, as the previous tests in this series.

#### Release 7

Released: 2001-03-25 0322
Changes:

- The server is comprised of four "engines" specifiable on the command line:
  - A GDI based shadow framebuffer server "-engine 1"
  - A DirectDraw3 based shadow framebuffer server "-engine 2"
  - A DirectDraw4 based shadow framebuffer server "-engine 3" This server is special becuase it doesn't have to lock and unlock the shadow framebuffer for blitting. This server seems to have the highest performance.
  - A DirectDraw3 based primary framebuffer server "-engine 4" Engine 4 has the worst performance and is not as complete as the other servers, and it probably never will be complete, as the performance doesn't warrant the effort.
- Each server can be run in two modes:
  - Standard windowed mode, this is the default
  - Full screen mode, accessible via the "-fullscreen" parameter
- All engines, except engine 4, clip their output to their display window.
- All engines, except engine 4, redraw areas of their display window that has been covered and reexposed by another application's window.
- All engines should automatically detect the color masks
- Engines 2, 3, and 4 change the video mode to the mode specified on the command line. However, these engines do not currently verify that the mode is valid, nor do they fallback on another mode, they simple exit if the mode cannot be set.
- Engines 1, 2, and 3 can be minimized and moved all over the screen without crashing.
- A bug was fixed in the window repainting code that caused an infinite loop. I lost track of whether I ever released a version that contained that bug; but it is fixed now, so who cares? :)
- All engines allow you to specify modes that will hang your computer. I'm not kidding... be careful what engine and mode you specify.
- Engine 4 will freeze Window 95/98/Me in its tracks, don't try to run it on those versions of Windows. Besides, engines 1, 2, and 3 are much faster than engine 4, so you have no reason to try running engine 4.
- Engine 3 only works when you have DirectX 6+ installed.
- Mouse wheel support, just in case you missed the last couple of announcements :)

Thanks to John Fortin for pointing me in the direction of a client memory DirectDraw shadow surface, which allowed the non locking server to be created; also thanks for the example code.

As a side note, the Shadow Framebuffer Test name is now a misnomer, as the server includes an engine that writes directly to the primary framebuffer, without the need for the shadow fb code.

#### Release 6

Released: 2001-03-23 1113
Changes:

- I think I have fixed the bitfield color mask detection.

#### Release 5

Released: 2001-03-22 2143
Changes:

- Screen bitfield formats are now automatically detected for 15, 16, 24, and 32 bits per pixel. I'm not sure if 24 bpp or 15 bpp works though, cause my display can only do 16 and 32 bpp; 16 and 32 bpp have been tested on my machine. This release has much better chances of working on those problem machines that are out there, so please give it a try.
- Those of you running at 8 bits per pixel will also notice that I have started working on supporting 8 bits. The server will currently startup in 8 bits per pixel, but it doesn't have the correct colormap yet, so colors are mostly black with some pink and yellow thrown in for fun :)

#### Release 4

Released: 2001-03-22 1425
Changes:

- Crash on startup when resolution close to screen resolution.
- Crashes when a Windows window is moved over the border of the Cygwin/XFree86 window.

#### Release 3

Released: 2001-03-22 0135
Changes:

- The mouse wheel was only scrolling once every other turn. I fixed it so that it scrolls with every turn.

#### Release 2

Released: 2001-03-21 2250
Changes:

- Alexander Gottwald pointed me in the direction using 'xdpyinfo' to understand the visual formats being used by the X server. Combined with my examination of the XonX folks code I was able to get colors displaying correctly for some screen depths, namely 16 and 32, and possibly 24 bits per pixel.
- While I was fixing things I decided to throw in some dogfood: mouse wheel scrolling now works :) Of course, mouse wheeling under X has plenty of caveats, so don't expect all of your applications to magically support the wheel.

#### Release 1

Released: 2001-03-20 2126
Changes:

- I'm happy to announce a shadow framebuffer based test server. This server should work on Windows 95/98/Me, as well as Windows NT 4.0 and Windows 2000.