From f4092abdf94af6a99aff944d6264bc1284e8bdd4 Mon Sep 17 00:00:00 2001 From: Reinhard Tartler Date: Mon, 10 Oct 2011 17:43:39 +0200 Subject: Imported nx-X11-3.1.0-1.tar.gz Summary: Imported nx-X11-3.1.0-1.tar.gz Keywords: Imported nx-X11-3.1.0-1.tar.gz into Git repository --- .../Mesa/src/mesa/drivers/dri/s3v/s3v_lock.c | 62 ++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_lock.c (limited to 'nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_lock.c') diff --git a/nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_lock.c b/nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_lock.c new file mode 100644 index 000000000..52bb87ece --- /dev/null +++ b/nx-X11/extras/Mesa/src/mesa/drivers/dri/s3v/s3v_lock.c @@ -0,0 +1,62 @@ +/* + * Author: Max Lingua + */ + +#include "s3v_context.h" + +#if DEBUG_LOCKING +char *prevLockFile = NULL; +int prevLockLine = 0; +#endif + + +/* Update the hardware state. This is called if another context has + * grabbed the hardware lock, which includes the X server. This + * function also updates the driver's window state after the X server + * moves, resizes or restacks a window -- the change will be reflected + * in the drawable position and clip rects. Since the X server grabs + * the hardware lock when it changes the window state, this routine will + * automatically be called after such a change. + */ +void s3vGetLock( s3vContextPtr vmesa, GLuint flags ) +{ + __DRIdrawablePrivate *dPriv = vmesa->driDrawable; +/* __DRIscreenPrivate *sPriv = vmesa->driScreen; */ + + printf("s3vGetLock <- ***\n"); + + drmGetLock( vmesa->driFd, vmesa->hHWContext, flags ); + + /* The window might have moved, so we might need to get new clip + * rects. + * + * NOTE: This releases and regrabs the hw lock to allow the X server + * to respond to the DRI protocol request for new drawable info. + * Since the hardware state depends on having the latest drawable + * clip rects, all state checking must be done _after_ this call. + */ + /* DRI_VALIDATE_DRAWABLE_INFO( vmesa->display, sPriv, dPriv ); */ + + if ( vmesa->lastStamp != dPriv->lastStamp ) { + vmesa->lastStamp = dPriv->lastStamp; + vmesa->new_state |= S3V_NEW_WINDOW | S3V_NEW_CLIP; + } + + vmesa->numClipRects = dPriv->numClipRects; + vmesa->pClipRects = dPriv->pClipRects; + +#if 0 + vmesa->dirty = ~0; + + if ( sarea->ctxOwner != vmesa->hHWContext ) { + sarea->ctxOwner = vmesa->hHWContext; + vmesa->dirty = S3V_UPLOAD_ALL; + } + + for ( i = 0 ; i < vmesa->lastTexHeap ; i++ ) { + if ( sarea->texAge[i] != vmesa->lastTexAge[i] ) { + s3vAgeTextures( vmesa, i ); + } + } +#endif +} -- cgit v1.2.3