diff options
author | Tim Waugh <twaugh@redhat.com> | 2014-09-09 14:40:17 +0100 |
---|---|---|
committer | Tim Waugh <twaugh@redhat.com> | 2014-09-09 14:40:17 +0100 |
commit | 9e3dcea7883c8fa13f300bb203ecfe1c6ce5bbba (patch) | |
tree | 5272d487b5f7393fd87501380e781735ea73a4c6 /unix/xserver116.patch | |
parent | 11153107dc93745df03012b02c564fe5a3cc10bc (diff) | |
download | tigervnc-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.patch | 22 |
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; |