File disable_nagle_on_tcp_socket.diff of Package xorg-x11-libxcb

--- src/xcb_util.c.orig	2007-10-23 18:44:59.000000000 +0200
+++ src/xcb_util.c	2009-06-06 17:19:34.954937314 +0200
@@ -30,6 +30,7 @@
 #include <sys/socket.h>
 #include <sys/un.h>
 #include <netinet/in.h>
+#include <netinet/tcp.h>
 #ifdef DNETCONN
 #include <netdnet/dnetdb.h>
 #include <netdnet/dn.h>
@@ -233,9 +234,24 @@
     for(addr = results; addr; addr = addr->ai_next)
     {
         fd = socket(addr->ai_family, addr->ai_socktype, addr->ai_protocol);
-        if(fd >= 0 && connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
-            break;
-        fd = -1;
+        /*
+          X11 remote rendering is unusabe slow, because nagel is on
+          
+          For more info check:
+          https://bugs.freedesktop.org/show_bug.cgi?id=17868
+          http://cgit.freedesktop.org/xcb/libxcb/commit/?id=ee89850e68205a7f8961ace0839b5be86040dade
+        
+        */
+        if(fd >= 0) {
+          int on = 1;
+          setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &on, sizeof(on));
+                                
+          if (connect(fd, addr->ai_addr, addr->ai_addrlen) >= 0)
+              break;
+          close(fd);
+          fd = -1;
+        }
+                                                                                            
     }
     freeaddrinfo(results);
     return fd;
openSUSE Build Service is sponsored by