summary refs log tree commit diff
diff options
context:
space:
mode:
authorMartin Bravenboer <martin.bravenboer@logicblox.com>2007-03-05 18:28:49 +0000
committerMartin Bravenboer <martin.bravenboer@logicblox.com>2007-03-05 18:28:49 +0000
commitfb6d590e50eb6a863fe31385218525ce002e7cde (patch)
treef99e2b9867cf06b2f2158b1217fbacd2899a051e
parent3b1d307518a9c36a77f1f18ed8ed0b1c2bfac91a (diff)
downloadnixlib-fb6d590e50eb6a863fe31385218525ce002e7cde.tar
nixlib-fb6d590e50eb6a863fe31385218525ce002e7cde.tar.gz
nixlib-fb6d590e50eb6a863fe31385218525ce002e7cde.tar.bz2
nixlib-fb6d590e50eb6a863fe31385218525ce002e7cde.tar.lz
nixlib-fb6d590e50eb6a863fe31385218525ce002e7cde.tar.xz
nixlib-fb6d590e50eb6a863fe31385218525ce002e7cde.tar.zst
nixlib-fb6d590e50eb6a863fe31385218525ce002e7cde.zip
xorg libxcb: patch to disable assert that stops Java GUI apps from
working (the actual bug is in Java).


svn path=/nixpkgs/trunk/; revision=8189
-rw-r--r--pkgs/servers/x11/xorg/default.nix1
-rwxr-xr-xpkgs/servers/x11/xorg/generate-expr-from-tarballs.pl4
-rw-r--r--pkgs/servers/x11/xorg/xcb_xlib-no-assert-on-lock.patch30
3 files changed, 35 insertions, 0 deletions
diff --git a/pkgs/servers/x11/xorg/default.nix b/pkgs/servers/x11/xorg/default.nix
index 80931db32046..4d1f10d93e0b 100644
--- a/pkgs/servers/x11/xorg/default.nix
+++ b/pkgs/servers/x11/xorg/default.nix
@@ -1063,6 +1063,7 @@ rec {
       sha256 = "07fi4yvkni7rlkw9gv7z1fa6y63z34gpj3kklc9ydlqg72nb5mhr";
     };
     buildInputs = [pkgconfig libxslt libpthreadstubs libXau xcbproto libXdmcp ];
+    patches = [ ./xcb_xlib-no-assert-on-lock.patch ];
   }) // {inherit libxslt libpthreadstubs libXau xcbproto libXdmcp ;};
     
   libxkbfile = (stdenv.mkDerivation {
diff --git a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl b/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl
index e2ac2ac492d5..7d3a117be339 100755
--- a/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl
+++ b/pkgs/servers/x11/xorg/generate-expr-from-tarballs.pl
@@ -44,6 +44,10 @@ $extraAttrs{"xorgserver"} = " mesaSrc = mesa.src; x11BuildHook = ./xorgserver.sh
 
 $extraAttrs{"imake"} = " inherit xorgcffiles; x11BuildHook = ./imake.sh; patches = [./imake.patch]; ";
 
+# Used to avoid the following assertion error:
+# java: xcb_xlib.c:50: xcb_xlib_unlock: Assertion `c->xlib.lock' failed. 
+$extraAttrs{"libxcb"} = " patches = [./xcb_xlib-no-assert-on-lock.patch]; ";
+
 $extraAttrs{"fontmiscmisc"} = " postInstall = \"ln -s \${fontalias}/lib/X11/fonts/misc/fonts.alias \$out/lib/X11/fonts/misc/fonts.alias\"; ";
 
 $extraAttrs{"mkfontdir"} = " preBuild = \"substituteInPlace mkfontdir.cpp --replace BINDIR \${mkfontscale}/bin\"; ";
diff --git a/pkgs/servers/x11/xorg/xcb_xlib-no-assert-on-lock.patch b/pkgs/servers/x11/xorg/xcb_xlib-no-assert-on-lock.patch
new file mode 100644
index 000000000000..bca4981dfd39
--- /dev/null
+++ b/pkgs/servers/x11/xorg/xcb_xlib-no-assert-on-lock.patch
@@ -0,0 +1,30 @@
+--- foo/src/xcb_xlib.c.orig	2006-11-25 22:03:30.000000000 +0000
++++ foo/src/xcb_xlib.c	2006-11-25 22:19:28.000000000 +0000
+@@ -38,18 +38,20 @@
+ void xcb_xlib_lock(xcb_connection_t *c)
+ {
+     _xcb_lock_io(c);
+-    assert(!c->xlib.lock);
+-    c->xlib.lock = 1;
+-    c->xlib.thread = pthread_self();
++    if (!c->xlib.lock) {
++        c->xlib.lock = 1;
++        c->xlib.thread = pthread_self();
++    }
+     _xcb_unlock_io(c);
+ }
+ 
+ void xcb_xlib_unlock(xcb_connection_t *c)
+ {
+     _xcb_lock_io(c);
+-    assert(c->xlib.lock);
+-    assert(pthread_equal(c->xlib.thread, pthread_self()));
+-    c->xlib.lock = 0;
+-    pthread_cond_broadcast(&c->xlib.cond);
++    if (c->xlib.lock) {
++        assert(pthread_equal(c->xlib.thread, pthread_self()));
++        c->xlib.lock = 0;
++        pthread_cond_broadcast(&c->xlib.cond);
++    }
+     _xcb_unlock_io(c);
+ }