diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/drivers/dri/i965/intel_context.c | 4 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/intel_context.h | 1 | ||||
| -rw-r--r-- | src/mesa/drivers/dri/i965/intel_pixel_copy.c | 5 | 
3 files changed, 8 insertions, 2 deletions
| diff --git a/src/mesa/drivers/dri/i965/intel_context.c b/src/mesa/drivers/dri/i965/intel_context.c index eafe809d3a..1fbf571184 100644 --- a/src/mesa/drivers/dri/i965/intel_context.c +++ b/src/mesa/drivers/dri/i965/intel_context.c @@ -576,6 +576,10 @@ GLboolean intelMakeCurrent(__DRIcontextPrivate *driContextPriv,     if (driContextPriv) {        struct intel_context *intel = (struct intel_context *) driContextPriv->driverPrivate; +      if (intel->driReadDrawable != driReadPriv) { +          intel->driReadDrawable = driReadPriv; +      } +        if ( intel->driDrawable != driDrawPriv ) {  	 /* Shouldn't the readbuffer be stored also? */  	 driDrawableInitVBlank( driDrawPriv, intel->vblank_flags, diff --git a/src/mesa/drivers/dri/i965/intel_context.h b/src/mesa/drivers/dri/i965/intel_context.h index 406f8483dc..ae25592908 100644 --- a/src/mesa/drivers/dri/i965/intel_context.h +++ b/src/mesa/drivers/dri/i965/intel_context.h @@ -234,6 +234,7 @@ struct intel_context     int driFd;     __DRIdrawablePrivate *driDrawable; +   __DRIdrawablePrivate *driReadDrawable;     __DRIscreenPrivate *driScreen;     intelScreenPrivate *intelScreen;      volatile drmI830Sarea *sarea;  diff --git a/src/mesa/drivers/dri/i965/intel_pixel_copy.c b/src/mesa/drivers/dri/i965/intel_pixel_copy.c index 58dc49505f..3bdf2fb479 100644 --- a/src/mesa/drivers/dri/i965/intel_pixel_copy.c +++ b/src/mesa/drivers/dri/i965/intel_pixel_copy.c @@ -231,6 +231,7 @@ do_blit_copypixels(GLcontext * ctx,     if (intel->driDrawable->numClipRects) {        __DRIdrawablePrivate *dPriv = intel->driDrawable; +      __DRIdrawablePrivate *dReadPriv = intel->driReadDrawable;        drm_clip_rect_t *box = dPriv->pClipRects;        drm_clip_rect_t dest_rect;        GLint nbox = dPriv->numClipRects; @@ -262,8 +263,8 @@ do_blit_copypixels(GLcontext * ctx,        srcy = dPriv->h - srcy - height;          dstx += dPriv->x;        dsty += dPriv->y; -      srcx += dPriv->x; -      srcy += dPriv->y; +      srcx += dReadPriv->x; +      srcy += dReadPriv->y;        /* Clip against the source region.  This is the only source         * clipping we do.  Dst is clipped with cliprects below. | 
