aboutsummaryrefslogtreecommitdiffstats
path: root/unix/xserver116.patch
diff options
context:
space:
mode:
authorTim Waugh <twaugh@redhat.com>2014-09-09 14:40:17 +0100
committerTim Waugh <twaugh@redhat.com>2014-09-09 14:40:17 +0100
commit9e3dcea7883c8fa13f300bb203ecfe1c6ce5bbba (patch)
tree5272d487b5f7393fd87501380e781735ea73a4c6 /unix/xserver116.patch
parent11153107dc93745df03012b02c564fe5a3cc10bc (diff)
downloadtigervnc-9e3dcea7883c8fa13f300bb203ecfe1c6ce5bbba.tar.gz
tigervnc-9e3dcea7883c8fa13f300bb203ecfe1c6ce5bbba.zip
Added missing part of write block handler.
https://bugzilla.redhat.com/show_bug.cgi?id=1137023
Diffstat (limited to 'unix/xserver116.patch')
-rw-r--r--unix/xserver116.patch22
1 files changed, 22 insertions, 0 deletions
diff --git a/unix/xserver116.patch b/unix/xserver116.patch
index aeeb5c70..d870ef7a 100644
--- a/unix/xserver116.patch
+++ b/unix/xserver116.patch
@@ -113,3 +113,25 @@ diff -up xorg-server-1.16.0/os/WaitFor.c.vnc xorg-server-1.16.0/os/WaitFor.c
BlockHandler((void *) &wt, (void *) &LastSelectMask);
if (NewOutputPending)
FlushAllOutput();
+@@ -223,10 +223,20 @@ WaitForSomething(int *pClientsReady)
+ i = Select(MaxClients, &LastSelectMask, &clientsWritable, NULL, wt);
+ }
+ else {
+- i = Select(MaxClients, &LastSelectMask, NULL, NULL, wt);
++ if (AnyClientsWriteBlocked)
++ XFD_ORSET(&socketsWritable, &ClientsWriteBlocked, &socketsWritable);
++
++ if (XFD_ANYSET(&socketsWritable)) {
++ i = Select(MaxClients, &LastSelectMask, &socketsWritable, NULL, wt);
++ if (AnyClientsWriteBlocked)
++ XFD_ANDSET(&clientsWritable, &socketsWritable, &ClientsWriteBlocked);
++ } else {
++ i = Select(MaxClients, &LastSelectMask, NULL, NULL, wt);
++ }
+ }
+ selecterr = GetErrno();
+ WakeupHandler(i, (void *) &LastSelectMask);
++ vncWriteWakeupHandler(i, &socketsWritable);
+ if (i <= 0) { /* An error or timeout occurred */
+ if (dispatchException)
+ return 0;