summaryrefslogtreecommitdiff
path: root/hw/xfree86/dri2
diff options
context:
space:
mode:
authorMario Kleiner <mario.kleiner@tuebingen.mpg.de>2010-02-21 05:25:59 +0100
committerJesse Barnes <jbarnes@virtuousgeek.org>2010-03-29 10:01:53 -0700
commit0de4974b90b10fa6a447cdf980b4a114c6c9e5a8 (patch)
tree8c7250e43e84766bc01e707ddd60656cdb2e410f /hw/xfree86/dri2
parent4c8ec49826a46eb3b36c69d2ad3f82320c179c38 (diff)
DRI2: Fix glitches in DRI2SwapComplete() and DRI2WakeupClient()
DRI2SwapComplete(): Increment pPriv->swap_count++; before calling into callback for INTEL_swap_events extension, so the swap event contains the current SBC after swap completion instead of the previous one. DRI2WakeupClient: Check for pPriv->target_sbc <= pPriv->swap_count, had wrong comparison pPriv->target_sbc >= pPriv->swap_count for unblocking of clients of DRI2WaitSBC(). Signed-off-by: Mario Kleiner <mario.kleiner@tuebingen.mpg.de>
Diffstat (limited to 'hw/xfree86/dri2')
-rw-r--r--hw/xfree86/dri2/dri2.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/hw/xfree86/dri2/dri2.c b/hw/xfree86/dri2/dri2.c
index ec4f982b4..cb227be3f 100644
--- a/hw/xfree86/dri2/dri2.c
+++ b/hw/xfree86/dri2/dri2.c
@@ -509,7 +509,7 @@ DRI2WakeClient(ClientPtr client, DrawablePtr pDraw, int frame,
* blocked due to GLX activity during a swap.
*/
if (pPriv->target_sbc != -1 &&
- pPriv->target_sbc >= pPriv->swap_count) {
+ pPriv->target_sbc <= pPriv->swap_count) {
ProcDRI2WaitMSCReply(client, ((CARD64)tv_sec * 1000000) + tv_usec,
frame, pPriv->swap_count);
pPriv->target_sbc = -1;
@@ -546,13 +546,13 @@ DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, int frame,
return;
}
+ pPriv->swapsPending--;
+ pPriv->swap_count++;
+
ust = ((CARD64)tv_sec * 1000000) + tv_usec;
if (swap_complete)
swap_complete(client, swap_data, type, ust, frame, pPriv->swap_count);
- pPriv->swapsPending--;
- pPriv->swap_count++;
-
DRI2WakeClient(client, pDraw, frame, tv_sec, tv_usec);
}