david@geac.UUCP (11/19/87)
As a result of a number of people asking me what the 60 patches from xstuff fixed, I have compiled the following list from by change log file. If people are interested, I will post updates to this list in units of 10 (ie: the next list will be posted as patch 70 is reached) unless someone has a major objection. ------------------------------------------------------------ Patch #60 done. Fixed clients/xpr/xpr.man, clients/xpr/Imakefile, clients/xpr/xpr.c Added clients/xpr/xpr.h, clients/xpr/pmp.h, clients/xpr/x2pmp.c xpr didn't work very well on various machines and in lots of situations included is the addition of PagePrinter 3812 support ------------------------------------------------------------ Patch #59 done. Fixed server/dix/events.c If the cursor on a ChangeActivePointerGrab is None, the cursor will be set to garbage. Also, if the cursor is None, the cursor will be changed even if the timestamp test fails. ------------------------------------------------------------ Patch #58 done. Fixed server/dix/events.c mouse control settings from the command line were ignored. control settings should always be passed down to the device at initialization, not just when it is "the" input device. ------------------------------------------------------------ Patch #57 done. Fixed server/dix/events.c cursor confines are not reset when switching screens, causing havoc if the screen have different dimensions ------------------------------------------------------------ Patch #56 done. Fixed server/dix/events.c This fix turns up an unpleasant fact, namely that it is not possible for "other" clients to track the real-estate driven input focus during a pointer grab (because they will receive no Enter/Leave events). Clients like xterm will now behave incorrectly (with this fix applied), and need to be fixed; the only fix seems to be to highlight as if the focus is always lost on a pointer grab. This is a clear deficiency in the protocol (since considerable effort was expended to try and give clients sufficient focus information). ------------------------------------------------------------ Patch #55 done. Fixed server/ddx/mi/mipushpxl.c Xfree called on tail rather than head pointer. ------------------------------------------------------------ Patch #54 done. Changed server/ddx/mfb/mfbitblt.c, server/ddx/cfb/cfbbitblt.c, server/ddx/mi/mibitblt.c, server/ddx/mi/miexpose.c CopyArea and CopyPlane: mfb didn't use screen's region procs mfb didn't generate events for zero planemask mfb and mi didn't obey IncludeInferiors on src graphics exposures didn't obey IncludeInferiors on dst mfb and cfb memory leaks ------------------------------------------------------------ Patch #53 done. Fixed server/ddx/sun/sunGC.c, server/ddx/apollo/apolloGC.c {sun,apollo}LineHelper was bypassing cursor checking by passing wrong GC {sun,apollo}CopyGC didn't include state changes {sun,apollo}DestroyClip didn't copy clip residue back {sun,apollo}CopyClip didn't copy clip back correct COMPARE_GC debugging ------------------------------------------------------------ Patch #52 done. Fixed server/ddx/mfb/mfbcmap.c, server/ddx/cfb/cfb.h, server/ddx/cfb/cfbcsrinit.c, server/ddx/cfb/cfbcmap.c, server/ddx/sun/sunCG2C.c, server/ddx/sun/sunCG4C.c do reasonable things with (un)install of colormaps in cfb, sun handle colormaps on multiple screens in mfb and cfb ------------------------------------------------------------ Patch #51 done. Fixed server/dix/colormap.c FindColor returns status, it doesn't store it in the pixel. two off-by-1 errors in FindColor. ------------------------------------------------------------ Patch #50 done. Fixed server/ddx/mi/milines.c memory leak in miWideLine prefer ALLOCATE_LOCAL to Xalloc ------------------------------------------------------------ Patch #49 done. Fixed server/dix/gc.c default tile created by CreateGC would never be freed default tile casues extra ChangeGC call ------------------------------------------------------------ Patch #47 done. Changed server/dix/dispatch.c KillServerResources() should allow extensions to close down cleanly. ------------------------------------------------------------ Patch #47 done. Fixed server/dix/window.c share border on CopyFromParent, don't cons pass correct flag to ddx when border CopyFromParent yields a pixel don't flush caches when realizing a window some nits ------------------------------------------------------------ Patch #46 done. Changed server/dix/window.c. xsetroot -solid <color> where 'color' translates to pixel value zero, will cause the server to dump core when the screensaver activates. ------------------------------------------------------------ Patch #45 done. Fixed server/ddx/qvss/qvss_io.c and server/ddx/ibm/apa16/apa16io.c VSII: after starting up X, the cursor tracks the mouse but never changes on window crossings and input always goes to one window (if any) RT: after starting up X, the cursor does not track the mouse but will jump to a new position whenever a button is pressed. Cursor never changes, input goes to single window. ------------------------------------------------------------ Patch #44 done. Changed server/ddx/sun/sun.h and server/ddx/sun/sunKbd.c Autorepeat had an interaction with the screensaver that caused the screen to flicker. Autorepeat was also too slow, so it was made faster. Autorepeat and keyclick are now controllable by the ChangeKbdCtrl. There were also problems with keyboard translation and SunView; most of these are now fixed. Some lint fixes are also included. ------------------------------------------------------------ Patch 43 done. Fixed server/ddx/cfb/cfb.h cfbPrivGC no longer matches mfbPrivGC. The private data structures for cfb should always match those of mfb. ------------------------------------------------------------ Patch 42a done. Fixed lib/CLX/dependent.l and lib/CLX/depdefs.l #1 *clx-cached-names* in clx.cl, was is loaded BEFORE dependent, where *clx-cached-names* was defined. #2 patch dies on the part of the bug fix for attributes.cl (patch #2 had one line missing) ------------------------------------------------------------ Patch #42 done. Changed lib/CLX/clx.l, lib/CLX/macros.l, lib/CLX/attributes.l, and lib/CLX/requests.l missing values in pixmap-format-bits-per-pixel type various missing -equal functions various function symbols not exported that should be buggy OR type expansion get-property sometimes returned non-nil when it shouldn't NOTE: patch to attributes.l was reported as terminating early by patch. ------------------------------------------------------------ Patch #41 done. Changed clients/bitmap/bitmap.c bitmap had a wrong assumption about the relationship between BlackPixel() and WhitePixel(). ------------------------------------------------------------ Patch #40 done. Fixed lib/X/XParseCol.c XParseColor fails to set the flags field of the XColor structure, the way XQueryColor[s] does. This caused anomalies in various applications, who shouldn't have to think about this. ------------------------------------------------------------ Patch #39 done. Changed lib/Xtk/AsciiSink.c Makes the text insertion cursor work reasonably. ------------------------------------------------------------ Patch #38 done. Changed lib/Xtk/StringSrc.c XtStringSourceCreate() uses the wrong arguments for XtGetSubresources(). ------------------------------------------------------------ Patch #37 done. Fixed server/dix/dispatch.c From the name of the function, I assume FlushClientCaches is supposed to remove all references to a resource id from every active client's cache, but the statement if (client == clients[i]) restricts FlushClientCaches' attention to only the client that owns the resource. ------------------------------------------------------------ Patch #36 done. Changed lib/X/XEvToWire.c XSendEvent trashes window ID when sending a KeyPress event. Also applied patch 36a which moved version 1.11 to 1.12 and removed a redundant include of stdio.h. The patches should be applied in the order 36a then 36 ------------------------------------------------------------ Patch #35 done. Changed server/ddx/mi/misetclip.c miRectsToRegion() uses the protocol constants, such as Unsorted, where it should be using the clip type constants, such as CT_UNSORTED. ------------------------------------------------------------ Patch #34 done. Fixed server/dix/window.c WarpPointer doesn't include inferiors of the source window in its visibility calculation, but should. (The spec is ambiguous on this point, and needs rewording.) ------------------------------------------------------------ Patch #33 not done. File clients/xwd/xwd.c The patch was already applied to the xwd code. ------------------------------------------------------------ Patch #32 done: Fixed lib/X/XOpenDis.c Modifications to allow for rebinding of shifted function keys. ------------------------------------------------------------ Patch #31 done. Fixed server/os/4.2bsd.oscolor.c The pointer dbent.ptr returned by the dbm fetch(dbent) is (char *) type, and is casted to a (short *) which can create buss errors (on some machines) for the fetch operation in folling assigns like on line 56: *pred = prgb->red; ------------------------------------------------------------ Patch #30 done. Changed server/dix/events.c server/ddx/lk201/lk201.c and server/ddx/sun/sunKbd.c Lock keys on Vaxen and Suns don't toggle, but act just like vanilla shift keys. Pressing or releaseing a modifier key on a Sun disables autorepeat on any "real" key that is down. ------------------------------------------------------------ Patch #29 done. Changed clients/xmodmap/xmodmap.c xmodmap as written would not allow for an increase in the number of keycodes per modifier. ------------------------------------------------------------ Patch #28 done. Fixed server/dix/resource.c If there is more than one class of resource under a given resource ID, FreeResource will only free the first resource it encounters. Since FreeResource breaks out of the loop once it has freed a single resource, rather than proceeding to the end of the chain, if there is more than one class for a single resource ID (as is done for windows on the sun server), the previous resource will remain. It should be noted as a caveat that the DeleteFunc for a resource is not allowed to call AddResource (although it is permitted to call FreeResource) ------------------------------------------------------------ Patch #27 done. Fixed lib/X/XGetHints.c XGetTransientForHint would free a null pointer if the hint was undefined. The final "Xfree( (char *) data);" would free a null pointer if the hint wasn't defined for the window. XGetClassHint would also Xfree a null pointer if the property was undefined. The final Xfree was at fault. ------------------------------------------------------------ Patch #26 done. Changed server/dix/dispatch.c server/dix/gc.c and server/ddx/apollo/apolloGC.c Multiple problems with server SetClipRectangles Missing clip stuff in apollo ddx SetClipRectangles request had side-effects even on BadMatch, in violation of the specification Error value returned from SetClipRects was being ignored SetClipRectangles was setting the gc serial change wrong SetClipRects had more uninitialized variables than you could shake a pointer at. SetClipRects did not include origin changes in the gc interest mask check. Apollo gc shadowing was missing PolyClip support, and needed the same kludge as for Sun for ChangeClip and ValidateGC. ------------------------------------------------------------ Patch #25 done. Fixed server/dix/gc.c server/ddx/sun/sunGC.c and server/ddx/apollo/apolloGC.c Using long dash-lists can be hazardous to your server. CopyGC in the server always allocates a list of length 2, rather than the actual length of the list. Likewise for the shadow gc's created by sun and apollo ddx's, although the length just happens to be 2 anyway. SetDashes should be flagging the gc serial number. ------------------------------------------------------------ Patch #24 done. Modified server/dix/dispatch.c The server GetImage: + dies if you ask for zero width + scribbles on memory if a single scanline is larger than IMAGE_BUFSIZE + allocates more memory than is needed for small images + needlessly kills client on allocation failure ------------------------------------------------------------ Patch #23 done. Fixed lib/CLX/buffer.l CLX read-sequence-card8/16/32 did not return its result. ------------------------------------------------------------ Patch #22 done. Changed lib/X/XEvToWire.c Sending a ClientMessage with a known window field caused the contents to get trashed. (missing break in switch) ------------------------------------------------------------ Local Change: Changed util/imake.includes/Imake.tmpl Changed USRLIBDIR from .../usr/lib to .../usr/lib/X11 ------------------------------------------------------------ Local Change: Changed doc/Xlib/Xman/Imakefile rule for depend: was missing causing make depend to abort. ------------------------------------------------------------ Local Change: Changed clients/gnuplot/Imakefile changed reference from -lnm to -lm. -lnm is an MIT special. Suggested by James Peterson <peterson@MCC.COM> Confirmed by David Keikorian <dkk@ATHENA.MIT.EDU> ------------------------------------------------------------ Local Change: Changed util/imake.includes/Sun.macros set DebugLibX to NO in an attempt to speed things up. Suggested by David R. Stampf <drs@bnl.arpa> ------------------------------------------------------------ Local Change: Imakefile changed the ln -s ... to -ln -s to avoid stopping a make without the -k option. Suggested by David R. Stampf <drs@bnl.arpa> ------------------------------------------------------------ Local Change: Changed server/ddx/sun/sun.h set AUTOREPEAT_DELAY to 20 from 100 milliseconds. (it was just too slow) Suggested by Adam R de Boor <deboor@dill.Berkeley.EDU> ------------------------------------------------------------ Patch #21 done. Changed server/dix/gc.c. Several locations in gc.c call QueryBestSize procedures using integer parameters. Xproto.h specifies the use of short integers. ------------------------------------------------------------ Patch #20 done. Changed server/dix/grabs.c. Rtl window manager tickles server bug causing core dump. We have a Passive Grab (Async) for both Key and Mouse, set for each client when Rtl recognizes it and Tiles it. The grab activates when a user types or clicks in the client. We then Ungrab the Key/Pointer, and AllowEvents (with Replay), so that the client sees the event. The Passive Grab is restored when the pointer leaves the client window (upon a LeaveNotify). The fault seems to occur when the Passive Grab is restored. ------------------------------------------------------------ Patch #19 done. fixed lib/CLX/clx.l. MANUALLY APPLIED. encode modifier mask ------------------------------------------------------------ Patch #18 done. Changed lib/CLX/attributes.l. MANUALLY APPLIED. extraneous argument in CLX window-priority setf. ------------------------------------------------------------ Patch #17 done. Fixed lib/X/XPutImage.c XPutImage did not work with Z format, particularly on subimages and 1-bit Z format with respect to bit order. ------------------------------------------------------------ Patch #16 done. Changed server/ddx/mfb/mfbimage.c. mfbPutImage was treating ZPixmap format as equivalent to XYBitmap when it should be equivalent to XYPixmap. ------------------------------------------------------------ Patch #15 done. Fixed server/ddx/mi/miregion.c. MANUALLY APPLIED. miClipSpans was not handling all aspects of clipping correctly. ------------------------------------------------------------ Patch #14 done. Changed server/dix/colormap.c. AllocColor was retaining garbage bits of pPix for a TrueColor map. ------------------------------------------------------------ Patch #13 done. Patch to server/dix/gc.c to change an = to == in an evaluation clause. ------------------------------------------------------------ Patch #12 done. Fixed lib/oldXtk/Command.c Modified to use 1 instead of calling DefaultDepth. ------------------------------------------------------------ Patch #11 done. Change to server/dix/colormap.c. colormap entries allocated by AllocColorCells or AllocColorPlanes in colormaps not owned by the client were never freed on the termination of the client. The fix also plugs a memory leak found incidentally. ------------------------------------------------------------ Patch #10 done. Fixed server/dix/events.c Note that this patch attempts to change the header of the file colormap.c from 1.53 to 1.54. No code changes accompany this change of header. The colormap.c in the MIT distribution is 1.52. This rejected patch was ignored. ------------------------------------------------------------ Patch #9 not applied. A manual script to set links for System V. This is not applicable on our BSD sites. ------------------------------------------------------------ Patch #8 done. Fixed lib/oldXMenu/Create.c XmenuCreate did not read defaults from the .Xdefaults as the 'display' argument in the calls to XGetDefault was missing. ------------------------------------------------------------ Patch #7 done manually. A change to fonts/bdf/9x15.bdf to change the width of the characters from 10 to 9 (DWIDTH 10 became DWIDTH 9) ------------------------------------------------------------ Patch #6 done. Fixed lib/X/XKeyBind.c Extends the key set to allow NUL to be generated by cntrl-@ and cntrl-spacebar. ------------------------------------------------------------ Patch #5 done. Changed clients/bitmap/bitmap.c Bitmap was dumping core when specifying colors on a color screen. ------------------------------------------------------------ Patch #4 done. Change to lib/X/XSetCRects.c Missing a semi-colon. ------------------------------------------------------------ Patch #3 done. Corrected server/dix/tables.c Wrong swapping routine used in MappingNotify events. ------------------------------------------------------------ Patch #2 applied by hand. Modified lib/CLX/text.l to remove compile warnings to text-extents-local. ------------------------------------------------------------ Patch #1 was already applied in the standard release tape. -- David Haynes Geac Computers International Inc. UUCP: {mnetor|yetti|utgpu}!geac!david