summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKristian Høgsberg <krh@redhat.com>2008-03-03 19:08:26 -0500
committerKristian Høgsberg <krh@redhat.com>2008-03-03 19:16:20 -0500
commit3d608c7a2d451b862ae19b1e01d7299b2c46fe78 (patch)
tree34ce532a5287a39ce714a46d2afd495ae79f6b58
parent4f7a75cc8a6cee7763b2d92e3d34858c3de7bd4f (diff)
[dri2] Add tail pointer to reemitDrawableInfo callback.
When the DRI doesn't parse the event buffer for a while, the X server may overwrite data that the driver didn't get a chance to look at. The reemitDrawableInfo callback requests that the X server reemit all info for the specified drawable. To make use of this, the drive needs to know the new tail pointer so it know where to start reading from.
-rw-r--r--include/GL/internal/dri_interface.h3
-rw-r--r--src/mesa/drivers/dri/common/dri_util.c2
2 files changed, 3 insertions, 2 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
index 175ff2d3af..a815c28dbc 100644
--- a/include/GL/internal/dri_interface.h
+++ b/include/GL/internal/dri_interface.h
@@ -424,8 +424,9 @@ struct __DRIcoreDRI2ExtensionRec {
* specified drawable in the DRI2 event buffer.
*
* \param draw the drawable for which to request info
+ * \param tail the new event buffer tail pointer
*/
- void (*reemitDrawableInfo)(__DRIdrawable *draw);
+ void (*reemitDrawableInfo)(__DRIdrawable *draw, unsigned int *tail);
};
diff --git a/src/mesa/drivers/dri/common/dri_util.c b/src/mesa/drivers/dri/common/dri_util.c
index 7283653883..59224c6651 100644
--- a/src/mesa/drivers/dri/common/dri_util.c
+++ b/src/mesa/drivers/dri/common/dri_util.c
@@ -303,7 +303,7 @@ __driParseEvents(__DRIscreenPrivate *psp, __DRIdrawablePrivate *pdp)
* server overwrote it and we have to reset our tail
* pointer. */
DRM_UNLOCK(psp->fd, psp->lock, pcp->hHWContext);
- (*psp->dri2.core->reemitDrawableInfo)(pdp->pdraw);
+ (*psp->dri2.core->reemitDrawableInfo)(pdp->pdraw, &pdp->dri2.tail);
DRM_LIGHT_LOCK(psp->fd, psp->lock, pcp->hHWContext);
}