dri2: Copy front to fake front in swapbuffer

If we don't have a fake front, nothing will happen.  The fix was extracted
from a bigger patch from Francisco Jerez.

https://bugs.freedesktop.org/show_bug.cgi?id=27305
Signed-off-by: Kristian Høgsberg <krh@bitplanet.net>
Reviewed-by: Pauli Nieminen <suokkos@gmail.com>
Signed-off-by: Keith Packard <keithp@keithp.com>
This commit is contained in:
Kristian Høgsberg 2010-05-10 08:36:02 -04:00 committed by Keith Packard
parent ba1f1f9d9e
commit 4f0006c220

View File

@ -634,6 +634,8 @@ DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, int frame,
ScreenPtr pScreen = pDraw->pScreen;
DRI2DrawablePtr pPriv;
CARD64 ust = 0;
BoxRec box;
RegionRec region;
pPriv = DRI2GetDrawable(pDraw);
if (pPriv == NULL) {
@ -645,6 +647,14 @@ DRI2SwapComplete(ClientPtr client, DrawablePtr pDraw, int frame,
pPriv->swapsPending--;
pPriv->swap_count++;
box.x1 = 0;
box.y1 = 0;
box.x2 = pDraw->width;
box.y2 = pDraw->height;
REGION_INIT(pScreen, &region, &box, 0);
DRI2CopyRegion(pDraw, &region, DRI2BufferFakeFrontLeft,
DRI2BufferFrontLeft);
ust = ((CARD64)tv_sec * 1000000) + tv_usec;
if (swap_complete)
swap_complete(client, swap_data, type, ust, frame, pPriv->swap_count);