If given many requests without replies, Xlib may not sync until it flushes
the output buffer. Thus, if Xlib can fit enough requests in the buffer to
pass by the number of requests it would normally sync after (65536 -
BUFSIZE/sizeof(xReq)), it will sync too late. The test case in bug 15023
demonstrated this by issuing a request with a reply (ListExtensions) at
just the right time to get confused with the GetInputFocus reply issued in
response to the sync 65,536 requests later; the test case used an async
handler to watch the replies, since otherwise it could not issue a request
without waiting for the response. When the test case failed, Xlib's sync
handler would eat the ListExtensions reply, and the test case's async
handler would see the GetInputFocus reply.
Fix this by replacing SEQLIMIT with a function sync_hazard() that uses the
buffer size to figure out when the sequence numbers could potentially wrap
before the next flush.
With this commit, the test case consistently passed, and the async reply
handler always saw the ListExtensions reply.
Commit by Jamey Sharp and Josh Triplett.
Inspired by bug 11930¹:
Commit 40ed4eef92e31fcf7ea0a436e1a00cdf49484c1b to x11proto added dead_psili
and dead_dasia keysyms. Make use of them in the en_US.UTF-8 and el_GR.UTF-8
Compose files.
This was done with a pair of perl scripts based on the one quoted in the
log for commit c76d30253f.
1] https://bugs.freedesktop.org/show_bug.cgi?id=11930
The code <U1000000D> was used where <U10000DC> was obviously intended.
It is possible that <Udiaeresis> should be used instead, if that will
not break anyone’s setup.
From bugzilla bug 10943¹:
There are several Catalan locale codes which presently can
be used in X11 systems; especially after they were accepted
in belocs-locale-data².
In the following patches, I³ add ca_AD, ca_FR and ca_IT Catalan
locale codes. For instance, without this, using ca_AD (actually
a quite used locale⁴) some applications (eg. Emacs or Skype)
cannot display Catalan diacritic marks as you type them.
1] https://bugs.freedesktop.org/show_bug.cgi?id=10943
2] http://lists.debian.org/debian-devel-changes/2005/07/msg01429.html
3] Toni Hermoso Pulido <toniher@softcatala.org>
4] https://launchpad.net/~ubuntu.cat/+members
The description from bugzilla bug 7417¹ is:
We've been shipping this patch for some time in Debian now. The
problem description from the patch header is reproduced below. You
may want to note the licensing issue mentioned below, but we've been
shipping it because the method by which this particular patch was
generated and updated was also given below.
This patch by Denis Barbier.
The X11 protocol states that Unicode keysyms are in the range
0x01000100 - 0x0110FFFF. If the result of composing characters is a
Unicode codepoint, X returns the corresponding Unicode keysym, which
is its Unicode codepoint augmented by 0x01000000. Latin-1
characters must not appear with their Unicode codepoints in compose
files, otherwise the returned composed character lies in the range
0x01000000 - 0x010000FF which is not valid.
There are two solutions: either fix composing routines to return
0xZZ instead of 0x010000ZZ (where Z is an hexadecimal digit), or
replace U00ZZ by their corresponding keysyms in compose files. The
latter is more logical and less error prone, so compose files will
be patched. Many applications accept these invalid Unicode keysyms,
but few of them don't, most notably xemacs. Only UTF-8 locales are
affected.
This has been fixed very recently in XFree86 CVS (but not xorg), but
for licensing reasons, this patch is not grabbed. Instead automatic
conversion is performed by:
sed -e '/XK_LATIN1/,/XK_LATIN1/!d' /usr/include/X11/keysymdef.h \
| grep -v deprecated | grep 0x0 \
| sed -e 's/0x0/U0/' -e 's/XK_//' \
| awk '{ printf "s/\\b%s\\b/%s/ig\n", $3, $2; }' > sedfile
for f in nls/*.UTF-8/Compose.pre
do
sed -f sedfile $f > $f.tmp && mv $f.tmp $f
done
[I edited the quoted script to update it for the current location of
the installed keysymdef.h and the current layout of the libX11
repo. -JimC]
I applied the script, not the patch attached to the bugreport.
1] https://bugs.freedesktop.org/show_bug.cgi?id=7417