diff options
Diffstat (limited to 'src/mesa')
| -rw-r--r-- | src/mesa/drivers/dri/intel/intel_context.c | 17 | 
1 files changed, 15 insertions, 2 deletions
| diff --git a/src/mesa/drivers/dri/intel/intel_context.c b/src/mesa/drivers/dri/intel/intel_context.c index d24af46f59..ddb0550f77 100644 --- a/src/mesa/drivers/dri/intel/intel_context.c +++ b/src/mesa/drivers/dri/intel/intel_context.c @@ -944,10 +944,23 @@ intelMakeCurrent(__DRIcontextPrivate * driContextPriv,                   __DRIdrawablePrivate * driReadPriv)  {     __DRIscreenPrivate *psp = driDrawPriv->driScreenPriv; +   struct intel_context *intel; +   GET_CURRENT_CONTEXT(curCtx); + +   if (driContextPriv) +      intel = (struct intel_context *) driContextPriv->driverPrivate; +   else +      intel = NULL; + +   /* According to the glXMakeCurrent() man page: "Pending commands to +    * the previous context, if any, are flushed before it is released." +    * But only flush if we're actually changing contexts. +    */ +   if (intel_context(curCtx) && intel_context(curCtx) != intel) { +      _mesa_flush(curCtx); +   }     if (driContextPriv) { -      struct intel_context *intel = -         (struct intel_context *) driContextPriv->driverPrivate;        struct intel_framebuffer *intel_fb =  	 (struct intel_framebuffer *) driDrawPriv->driverPrivate;        GLframebuffer *readFb = (GLframebuffer *) driReadPriv->driverPrivate; | 
