Xorg - Xinerama - Bug - No response to mouse clicks

Hello,

the Xserver currently used by openSUSE 11.1 has a bug affecting users with multiple monitors using Xinerama. The bug causes the mouse buttons to stop working - please consult the url below for details.

There is a patch available, ( http://ftp.x.org/pub/individual/xserver/xorg-server-1.5.99.903.tar.gz ) but it does not seem to be included in http://download.opensuse.org/repositories/X11:/XOrg/openSUSE_11.0/ or http://download.opensuse.org/repositories/X11:/XOrg/openSUSE_Factory/

Will the patch be included anytime soon (time frame?) or should users compile from source? Are there other repositories than the ones mentioned above, that includes the patch?

From the 1.5.99.903 Changelog:

commit a9dd41de7eecc1dcede4ccc8d5cf25f10343bb1a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Mon Feb 2 10:20:13 2009 +1000

mi: don't call UpdateSpriteForScreen if we have Xinerama enabled. #18668

In Xinerama all windows hang off the first root window. Crossing the screens
must not reset the spriteTrace, otherwise picking fails and events are sent to
the root window.

X.Org Bug 18668 &lt;http://bugs.freedesktop.org/show_bug.cgi?id=18668&gt;

Signed-off-by: Peter Hutterer &lt;peter.hutterer@who-t.net&gt;
(cherry picked from commit 9fe9b6e4ef669b192ee349e3290db5d2aeea273c)

Signed-off-by: Keith Packard &lt;keithp@keithp.com&gt;

Hello,

below is a howto that may be helpful in getting a newer, patched, version of X up and running on SuSE 11.1:

There are quite few dependencies. You will need at least:

A compiler, autoconf, automake, libtool, probably libGL-devel, gettext-tools, bison, flex and intltool.

You will also need libdrm 2.4.5
$ git clone git://anongit.freedesktop.org/mesa/drm
$ ./autogen.sh --prefix=/usr
$ make
$ sudo make install

Then:

  1. Download git_xorg.sh from http://wiki.x.org/wiki/ModularDevelopersGuide?action=AttachFile&do=view&target=git_xorg.sh
  2. Put git_xorg.sh into an empty directory of your choosing. In the following the path to this directory will be referred to as /your/xorg_git
  3. Add the following line at the end of git_xorg.sh

do_dir xorg font “${font}”

to also download fonts, which according to wiki.x.org is necessary for compilation from scratch.

  1. Make git_xorg.sh executable e.g.: $ chmod a+x git_xorg.sh

  2. Run git_xorg.sh: $ ./git_xorg.sh
    The script downloads about 425mb and will therefore need some time to complete.

After running git_xorg.sh your directory should contain:
$ ls -F
app/ data/ doc/ driver/ drm/ font/ git_xorg* lib/ pixman/ proto/ util/ xcb/ xserver/

  1. To build X run the build script build.sh located in ./util/modular You may consider putting the output of build into a directory of your choice - in the following this directory will be assumed to be /your/xorg_modular

$ ./util/modular/build.sh /your/xorg_modular

In my case the the driver xf86-video-imstt failed to build - I did not investigate why. Unless you need this specific driver and your build fails at this point you can skip this driver and continue from the next driver in line by giving the command $ ./util/modular/build.sh -r driver/xf86-video-mga /your/xorg_modular Alternatively, you may edit the build.sh script by commenting out the line building the imstt driver (build driver xf86-video-imstt).

If your build fails somewhere else it is probably due to some missing dependency. Examine the output and try to figure out which package you need to install to continue the build. (To continue the build from a specific point use the -r option as shown above.) Please note that the build.sh script will need quite a bit of time to complete.

  1. Install xkeyboard-config v1.5
    $ wget http://xlibs.freedesktop.org/xkbdesc/xkeyboard-config-1.5.tar.bz2
    $ tar jxvf xkeyboard-config-1.5.tar.bz2
    $ cd xkeyboard-config-1.5
    $ ./configure --prefix=/your/xorg_modular
    $ make
    $ make install

  2. If you need to use the proprietary nvidia driver you can get the 180.29 for 32 bit x86 from
    $ wget http://us.download.nvidia.com/XFree86/Linux-x86/180.29/NVIDIA-Linux-x86-180.29-pkg1.run

Make the script executable and execute as root. The -e option let you specify paths during installation. For a list of options try:

$ ./NVIDIA-Linux-x86-180.29-pkg1.run -A

Unfortunately I did not take notes during the installation, but you need to adjust some of the paths. The installer normally use the commands Xorg -showDefaultLibPath and Xorg -showDefaultModulePath for information about paths. I do not know whether this is also the case when run with the -e option. You could back up (while X is not running) your original /usr/bin/Xorg and replace it with your newly compiled Xorg $ sudo cp /your/xorg_modular/bin/Xorg /usr/bin/Xorg to make sure the paths come from the newly compiled version of Xorg.

To install the driver (X should not run while the script is run. (E.g. init 3 as root and maybe also CTRL-ALT-BACKSPACE))
$ ./NVIDIA-Linux-x86-180.29-pkg1.run -e --x-prefix /your/xorg_modular
Edit paths as needed

(I think it is sad that the nvidia driver is still proprietary. If you have not already, you might want to have a look at http://www.gnu.org/philosophy/fsfs/rms-essays.pdf )

  1. To use the new server you need to set

$ export LD_LIBRARY_PATH=/your/xorg_modular/lib

to use the libraries

You can also edit /etc/ld.so.conf and run ldconfig

  1. Check that the xserver is is SUID root.
    ls -l /your/xorg_modular/bin/Xorg should give (note the s in rws):
    -rws–x–x 1 root root … /your/xorg_modular/bin/Xorg*
    If not
    $ su
    Password: <enter your root password here>

chown root:root /your/xorg_modular/bin/Xorg

chmod 4711 /your/xorg_modular/bin/Xorg

exit

  1. Start the new server (exit any currently running X first)
    startx – /your/xorg_modular/bin/Xorg

  2. If it does not work consult the log file /your/xorg/modular/var/log/Xorg.0.log

  3. For more information see, http://wiki.x.org/wiki/ModularDevelopersGuide

So there is still no fix for 11.1. I understand that 11.1 is using 1.5.2 version of xorg server, and that 1.6 has this fix built into the mainline.

Will there be a fix for openSuSE 11.1 at all?

If someone has built xorg-server package from scratch, could you guide us how to do it? I have source package downloaded, but I am not sure how to proceed.

In response to jodds, xorg-server is the affected piece, so if we do not have to rebuild the whole X, I would rather not. Plus, I would rather use openSuSE’s code.

Does anyone have any info on this matter?

I am also experiencing the mouse clicks stops working with Xinerama. A opensuse 11.1 fix would be very nice.

sunetjensen, I have downloaded the latest Xorg-server rpm for 11.1 from the openSUSE build service, and this package has the fix and it did solve my problem with mouse clicks.

You can look for a package in the OSBS. It has not yet been scheduled for update AFAIK, but you can get it directly.

Which package did you install? I see 7 pages when I search buildservice for xorg-x11-server.

I’m having the same issue with mouse stopping, thanks for providing this information.

so being impatient as I am i decided to go with the upgrade without further input but forgot about my old Matrox card. The MGA driver mga_drv.so was working because it was compiled for server version 1.5.2 and now won’t load with server version 1.6.

So i guess i need to find source and try to recompile the driver on my machine.

ok, is there a workaround to load a driver that was compiled for an earlier version of the xorg server. I’m having problems compiling MGA driver from source too.

I have downloaded only xorg-x11-server package, since that is the only one affected in the rebuild. I did not download the whole X “suite”.

Also, the package itself was a rebuild of code that shipped with 11.1, so that means 1.5.2 version of X server, not 1.6. I just insalled the new rpm over the old one.

I forgot the name of the guy who is a maintainer for X for 11.1, but here is the link to the bug that is used to fix to this:
https://bugzilla.novell.com/show_bug.cgi?id=483839

I forgot to mention that my version of xorg-x11-server package is 7.4-35.1. I see now that openSUSE:factory project has built up to 7.4-36.5 and that it is 1.6.1 X version.

I do not know how, but maybe you can get the older versions of this rpm …

I went and searched the OBS, and I think this is the package you need: X11: XOrg:sle11/xorg-x11-server

So project is X11: XOrg:sle11 and package xorg-x11-server. They made quite a few revs since I got it, but it is still 1.5.2 X version.