Fix bug #8799.
authorIan Romanick <idr@us.ibm.com>
Mon, 30 Oct 2006 23:44:54 +0000 (23:44 +0000)
committerIan Romanick <idr@us.ibm.com>
Mon, 30 Oct 2006 23:44:54 +0000 (23:44 +0000)
Properly resize bith the drawable and the readable in mgaUpdateRects.
Eliminate the use of the deprecated GetBufferSize interface.  Bump
driver date.

src/mesa/drivers/dri/mga/mgadd.c
src/mesa/drivers/dri/mga/mgastate.c

index faf46f31392d8fce3524896dd55ce9dcb946ac0c..b1d5e0c48fc11cec5fda020425392b811bd62f43 100644 (file)
@@ -41,7 +41,7 @@
 #include "mga_xmesa.h"
 #include "utils.h"
 
-#define DRIVER_DATE    "20050609"
+#define DRIVER_DATE    "20061030"
 
 
 /***************************************
@@ -74,24 +74,7 @@ static const GLubyte *mgaGetString( GLcontext *ctx, GLenum name )
 }
 
 
-static void mgaBufferSize(GLframebuffer *buffer, GLuint *width, GLuint *height)
-{
-   GET_CURRENT_CONTEXT(ctx);
-   mgaContextPtr mmesa = MGA_CONTEXT(ctx);
-
-   /* Need to lock to make sure the driDrawable is uptodate.  This
-    * information is used to resize Mesa's software buffers, so it has
-    * to be correct.
-    */
-   LOCK_HARDWARE( mmesa );
-   *width = mmesa->driDrawable->w;
-   *height = mmesa->driDrawable->h;
-   UNLOCK_HARDWARE( mmesa );
-}
-
-
 void mgaInitDriverFuncs( struct dd_function_table *functions )
 {
-   functions->GetBufferSize = mgaBufferSize;
    functions->GetString = mgaGetString;
 }
index 26fd863dadb149952e6cedfd72cfc77242438ef8..71a1150d0262ad8e7bac3ba6fb5d38b5af4a56f7 100644 (file)
@@ -774,13 +774,18 @@ static void mga_set_cliprects(mgaContextPtr mmesa)
 
 void mgaUpdateRects( mgaContextPtr mmesa, GLuint buffers )
 {
-   __DRIdrawablePrivate *driDrawable = mmesa->driDrawable;
+   __DRIdrawablePrivate *const driDrawable = mmesa->driDrawable;
+   __DRIdrawablePrivate *const driReadable = mmesa->driReadable;
    drm_mga_sarea_t *sarea = mmesa->sarea;
 
 
-   DRI_VALIDATE_DRAWABLE_INFO(mmesa->driScreen, driDrawable); 
    mmesa->dirty_cliprects = 0; 
 
+   driUpdateFramebufferSize(mmesa->glCtx, driDrawable);
+   if (driDrawable != driReadable) {
+      driUpdateFramebufferSize(mmesa->glCtx, driReadable);
+   }
+
    mga_set_cliprects(mmesa);
 
    sarea->req_drawable = driDrawable->draw;
@@ -788,8 +793,6 @@ void mgaUpdateRects( mgaContextPtr mmesa, GLuint buffers )
 
    mgaUpdateClipping( mmesa->glCtx );
    mgaCalcViewport( mmesa->glCtx );
-
-   mmesa->dirty |= MGA_UPLOAD_CLIPRECTS;
 }