summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@bitplanet.net>2010-07-29 18:52:35 -0400
committerKristian Høgsberg <krh@bitplanet.net>2010-08-06 08:28:10 -0400
commitc65f610e12f9df168d5639534ed3c2bd40afffc8 (patch)
treee1443374d6b29d36f1b5dd261aeac62608863c09
parent7e0575baf14ec4a89492fd2780f9ab5b9244afbd (diff)
Always call the flush callback chain when we flush client buffers
We were missing the callback in a couple of places. Drivers may use the flush callback to submit batched up rendering before events (for example, damage events) are sent out, to ensure that the rendering has been queued when the client receives the event. Signed-off-by: Kristian Høgsberg <krh@bitplanet.net> Reviewed-by: Keith Packard <keithp@keithp.com>
-rw-r--r--os/connection.c3
-rw-r--r--os/io.c4
2 files changed, 7 insertions, 0 deletions
diff --git a/os/connection.c b/os/connection.c
index c143fb6d3..77910be52 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -1033,6 +1033,9 @@ CloseDownConnection(ClientPtr client)
{
OsCommPtr oc = (OsCommPtr)client->osPrivate;
+ if (FlushCallback)
+ CallCallbacks(&FlushCallback, NULL);
+
if (oc->output && oc->output->count)
FlushClient(client, oc, (char *)NULL, 0);
#ifdef XDMCP
diff --git a/os/io.c b/os/io.c
index b5f98b7fa..e2df2e3ed 100644
--- a/os/io.c
+++ b/os/io.c
@@ -819,6 +819,10 @@ WriteToClient (ClientPtr who, int count, const void *__buf)
CriticalOutputPending = FALSE;
NewOutputPending = FALSE;
}
+
+ if (FlushCallback)
+ CallCallbacks(&FlushCallback, NULL);
+
return FlushClient(who, oc, buf, count);
}