Check in SwapBuffers for any new pending dri2 events
This commit is contained in:
parent
5174b85a0c
commit
3b132b297f
|
@ -283,7 +283,7 @@ __driUtilUpdateDrawableInfo(__DRIdrawablePrivate *pdp)
|
||||||
int
|
int
|
||||||
__driParseEvents(__DRIcontextPrivate *pcp, __DRIdrawablePrivate *pdp)
|
__driParseEvents(__DRIcontextPrivate *pcp, __DRIdrawablePrivate *pdp)
|
||||||
{
|
{
|
||||||
__DRIscreenPrivate *psp = pcp->driScreenPriv;
|
__DRIscreenPrivate *psp = pdp->driScreenPriv;
|
||||||
__DRIDrawableConfigEvent *dc, *last_dc;
|
__DRIDrawableConfigEvent *dc, *last_dc;
|
||||||
__DRIBufferAttachEvent *ba, *last_ba;
|
__DRIBufferAttachEvent *ba, *last_ba;
|
||||||
unsigned int tail, mask, *p, end, total, size, changed;
|
unsigned int tail, mask, *p, end, total, size, changed;
|
||||||
|
@ -291,7 +291,7 @@ __driParseEvents(__DRIcontextPrivate *pcp, __DRIdrawablePrivate *pdp)
|
||||||
size_t rect_size;
|
size_t rect_size;
|
||||||
|
|
||||||
/* Check for wraparound. */
|
/* Check for wraparound. */
|
||||||
if (psp->dri2.buffer->prealloc - pdp->dri2.tail > psp->dri2.buffer->size) {
|
if (pcp && psp->dri2.buffer->prealloc - pdp->dri2.tail > psp->dri2.buffer->size) {
|
||||||
/* If prealloc overlaps into what we just parsed, the
|
/* If prealloc overlaps into what we just parsed, the
|
||||||
* server overwrote it and we have to reset our tail
|
* server overwrote it and we have to reset our tail
|
||||||
* pointer. */
|
* pointer. */
|
||||||
|
@ -460,6 +460,9 @@ static void driSwapBuffers(__DRIdrawable *dPriv)
|
||||||
if (!dPriv->numClipRects)
|
if (!dPriv->numClipRects)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
if (psp->dri2.enabled)
|
||||||
|
__driParseEvents(NULL, dPriv);
|
||||||
|
|
||||||
psp->DriverAPI.SwapBuffers(dPriv);
|
psp->DriverAPI.SwapBuffers(dPriv);
|
||||||
|
|
||||||
driReportDamage(dPriv, dPriv->pClipRects, dPriv->numClipRects);
|
driReportDamage(dPriv, dPriv->pClipRects, dPriv->numClipRects);
|
||||||
|
|
Loading…
Reference in New Issue