Updates to intelWindowMoved():
authorBrian Paul <brian.paul@tungstengraphics.com>
Mon, 16 Oct 2006 21:39:34 +0000 (21:39 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Mon, 16 Oct 2006 21:39:34 +0000 (21:39 +0000)
Only need to call _mesa_resize_framebuffer() when we've detected a window
size change.
Set the drawFb->Initalized flag to GL_TRUE to avoid obsolete
Driver.GetBufferSize/ResizeBuffer calls in the Mesa code.

src/mesa/drivers/dri/i915/intel_context.c

index 2a8cccc..0f89972 100644 (file)
@@ -538,14 +538,14 @@ void intelSetBackClipRects( intelContextPtr intel )
 void intelWindowMoved( intelContextPtr intel )
 {
    __DRIdrawablePrivate *dPriv = intel->driDrawable;
+   GLframebuffer *drawFb = (GLframebuffer *) dPriv->driverPrivate;
 
    if (!intel->ctx.DrawBuffer) {
       intelSetFrontClipRects( intel );
    }
    else {
       driUpdateFramebufferSize(&intel->ctx, dPriv);
-    
-      switch (intel->ctx.DrawBuffer->_ColorDrawBufferMask[0]) {
+      switch (drawFb->_ColorDrawBufferMask[0]) {
       case BUFFER_BIT_FRONT_LEFT:
         intelSetFrontClipRects( intel );
         break;
@@ -558,10 +558,12 @@ void intelWindowMoved( intelContextPtr intel )
       }
    }
 
-   _mesa_resize_framebuffer(&intel->ctx,
-                           (GLframebuffer*)dPriv->driverPrivate,
-                           dPriv->w, dPriv->h);
-   
+   if (drawFb->Width != dPriv->w || drawFb->Height != dPriv->h) {
+      /* update Mesa's notion of framebuffer/window size */
+      _mesa_resize_framebuffer(&intel->ctx, drawFb, dPriv->w, dPriv->h);
+      drawFb->Initialized = GL_TRUE; /* XXX remove someday */
+   }
+
    /* Set state we know depends on drawable parameters:
     */
    {