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