intel-virtual-output: Flush the damage received message back to the local display

After processing the Damage notification, we need to send a message back
to the Xserver to clear the pending damage before we will be sent more
events. To make sure that message is sent we need to flush the output,
as we may never flush the output queue otherwise.

Reported-by: Severin Strobl <fd@severin-strobl.de>
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=68987
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2013-09-05 19:36:13 +01:00
parent 1ce52e9331
commit 12de799598
1 changed files with 5 additions and 1 deletions

View File

@ -2608,8 +2608,11 @@ int main(int argc, char **argv)
}
} while (XPending(ctx.display->dpy) || poll(&ctx.pfd[1], 1, 0) > 0);
if (damaged)
if (damaged) {
DBG(("%s clearing damage (after %d events)\n", DisplayString(ctx.display->dpy), damaged));
XDamageSubtract(ctx.display->dpy, ctx.display->damage, None, None);
ctx.display->flush = 1;
}
ret--;
}
@ -2662,6 +2665,7 @@ int main(int argc, char **argv)
for (i = 0; i < ctx.ndisplay; i++)
display_flush(&ctx.display[i]);
DBG(("%s timer still active? %d\n", DisplayString(ctx.display->dpy), ret != 0));
ctx.timer_active = ret != 0;
}
}