Harold Hunt | 4 Jul 10:27 2002

[ANNOUNCEMENT] Server Test 63


I just posted Test 63 to the server development page:

You can install the Test 63 package via setup.exe by selecting the
'test' package (and be sure to check the 'Bin' box): XFree86-xserv-4.2.0-10

Server Test Series binary and source code releases are now
available via the sources.redhat.com ftp mirror network
(http://cygwin.com/mirrors.html) in the
pub/cygwin/xfree/devel/shadow/ directory.  You may wish to note the
desired filename in the links below, then download from your
closest mirror (http://cygwin.com/mirrors.html).

Server binary, direct link:
http://www.msu.edu/~huntharo/xwin/shadow/XWin-Test63.exe.bz2 (1073 KiB)

Server source, direct link:
http://www.msu.edu/~huntharo/xwin/shadow/xwin-20020704-0300.tar.bz2 (75 KiB)

xc/config/cf/cygwin.cf diff against 20020704 XFree86 CVS:
0.diff (2 KiB)

xc/programs/Xserver/Imakefile diff against 20020704 XFree86 CVS:
704-0300.diff (1 KiB)

xc/programs/Xserver/hw/xwin (all files) diff against 20020704 XFree86 CVS:
http://www.msu.edu/~huntharo/xwin/shadow/xwin-20020704-0300.diff.bz2 (27


1) General - Fix the broken build that was Test62.  Test62 crashed
during its startup sequence for anyone unfortunate to download it
before it was pulled from distribution.  (Harold Hunt)

2) win.h, winmisc.c, winpfbdd.c, winshadgdi.c, winshaddd.c,
winshadddnl.c, winscrinit.c - Reimplement the stride pixel
calculations that were removed in Test61.  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)

3) 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)

4) 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)

5) 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)

6) 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)

7) 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 Test62 change log.  PseudoColor emulation is off by default.
(Harold Hunt)

8) 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)