Hello community, here is the log from the commit of package xorg-x11-libX11 checked in at Wed May 9 01:16:21 CEST 2007. -------- --- xorg-x11-libX11/xorg-x11-libX11.changes 2007-04-04 23:08:04.000000000 +0200 +++ /mounts/work_src_done/STABLE/xorg-x11-libX11/xorg-x11-libX11.changes 2007-05-07 16:10:33.000000000 +0200 @@ -1,0 +2,5 @@ +Thu May 03 16:10:51 CEST 2007 - mfabian@suse.de + +- Bugzilla #221326: add Egbert's XIM sync patch. + +------------------------------------------------------------------- New: ---- bug-221326-xim-sync.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xorg-x11-libX11.spec ++++++ --- /var/tmp/diff_new_pack.eXU484/_old 2007-05-09 01:16:12.000000000 +0200 +++ /var/tmp/diff_new_pack.eXU484/_new 2007-05-09 01:16:12.000000000 +0200 @@ -15,7 +15,7 @@ BuildRequires: pkgconfig xorg-x11-libXau-devel xorg-x11-libXdmcp-devel xorg-x11-libxcb-devel xorg-x11-proto-devel xorg-x11-xtrans-devel zlib-devel Url: http://xorg.freedesktop.org/ Version: 7.2 -Release: 35 +Release: 41 License: X11/MIT BuildRoot: %{_tmppath}/%{name}-%{version}-build Group: System/Libraries @@ -39,6 +39,7 @@ Patch10: bug-239698_libx11.diff Patch11: bug-252958_libX11.diff Patch12: bug-248332_lcDB.diff +Patch13: bug-221326-xim-sync.patch %description This package contains the X.Org X11 library. @@ -118,6 +119,7 @@ pushd src/xlibi18n %patch12 -p2 popd +%patch13 -p1 %build autoreconf -fi @@ -186,6 +188,8 @@ %{_mandir}/man3/* %changelog +* Thu May 03 2007 - mfabian@suse.de +- Bugzilla #221326: add Egbert's XIM sync patch. * Wed Apr 04 2007 - sndirsch@suse.de - bug-248332_lcDB.diff: * fixes a bad pointer calculation type (Bug #248332) ++++++ bug-221326-xim-sync.patch ++++++ diff --git a/modules/im/ximcp/imDefIc.c b/modules/im/ximcp/imDefIc.c index cb30ac2..31e9150 100644 --- a/modules/im/ximcp/imDefIc.c +++ b/modules/im/ximcp/imDefIc.c @@ -908,6 +908,30 @@ _XimProtoDestroyIC( return; } +/* + * Some functions require the request queue from the server to be flushed + * so that the ordering of client initiated status changes and those requested + * by the server is well defined. + * _XimSync() would be the function of choice here as it should get a + * XIM_SYNC_REPLY back from the server. + * This however isn't implemented in the piece of junk that is used by most + * input servers as the server side protocol if to XIM. + * Since this code is not shipped as a library together with the client side + * XIM code but is duplicated by every input server around the world there + * is no easy fix to this but this ugly hack below. + * Obtaining an IC value from the server sends a request and empties out the + * event/server request queue until the answer to this request is found. + * Thus it is guaranteed that any pending server side request gets processed. + * This is what the hack below is doing. + */ + +Private void +BrokenSyncWithServer(XIC xic) +{ + CARD32 dummy; + XGetICValues(xic, XNFilterEvents, &dummy, NULL); +} + Private void _XimProtoSetFocus( XIC xic) @@ -938,7 +962,8 @@ #else } } #endif /* XIM_CONNECTABLE */ - + BrokenSyncWithServer(xic); + buf_s[0] = im->private.proto.imid; /* imid */ buf_s[1] = ic->private.proto.icid; /* icid */ @@ -984,6 +1009,8 @@ #else } #endif /* XIM_CONNECTABLE */ + BrokenSyncWithServer(xic); + buf_s[0] = im->private.proto.imid; /* imid */ buf_s[1] = ic->private.proto.icid; /* icid */ diff --git a/modules/im/ximcp/imDefLkup.c b/modules/im/ximcp/imDefLkup.c ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org