Browse Source

Added missing part of write block handler.

https://bugzilla.redhat.com/show_bug.cgi?id=1137023
tags/v1.3.90
Tim Waugh 9 years ago
parent
commit
9e3dcea788
1 changed files with 22 additions and 0 deletions
  1. 22
    0
      unix/xserver116.patch

+ 22
- 0
unix/xserver116.patch View File

@@ -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;

Loading…
Cancel
Save