#### 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.