Remove calls to _mesa_ResizeBuffersMESA() - generally replace with code to
authorBrian Paul <brian.paul@tungstengraphics.com>
Sun, 15 Oct 2006 18:51:22 +0000 (18:51 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sun, 15 Oct 2006 18:51:22 +0000 (18:51 +0000)
check the current window size, then call _mesa_resize_framebuffer().

src/mesa/drivers/allegro/amesa.c
src/mesa/drivers/directfb/idirectfbgl_mesa.c
src/mesa/drivers/fbdev/glfbdev.c
src/mesa/drivers/ggi/ggimesa.c
src/mesa/drivers/glide/fxdd.c
src/mesa/drivers/svga/svgamesa.c

index cb46efa56aca715ba8d4e4bbe2556051420b7636..594668affda0f46fecdd8c5130fb70543d52f88a 100644 (file)
@@ -145,10 +145,20 @@ static void get_buffer_size(GLcontext *ctx, GLuint *width, GLuint *height)
     }\r
 \r
 \r
+/**\r
+ * We only implement this function as a mechanism to check if the\r
+ * framebuffer size has changed (and update corresponding state).\r
+ */\r
 static void viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)\r
 {\r
    /* poll for window size change and realloc software Z/stencil/etc if needed */\r
-   _mesa_ResizeBuffersMESA();\r
+   GLuint newWidth, newHeight;\r
+   GLframebuffer *buffer = ctx->WinSysDrawBuffer;\r
+   get_buffer_size( &newWidth, &newHeight );\r
+   if (buffer->Width != newWidth || buffer->Height != newHeight) {\r
+      _mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );\r
+   }\r
+\r
 }\r
 \r
 \r
index d11241b2b215f5ed76db848c90ab0ccdb52fb2cf..3c2a77b5bc49d8c2ff23860425ff890d3ed57db7 100644 (file)
@@ -214,7 +214,8 @@ IDirectFBGL_Mesa_Lock( IDirectFBGL *thiz )
      if (data->width != width || data->height != height) {
           data->width  = width;
           data->height = height;
-          _mesa_ResizeBuffersMESA();
+          _mesa_resize_framebuffer(&data->context, 
+                                   &data->framebuffer, width, height);
      }
 
      data->locked = DFB_TRUE;
@@ -355,10 +356,19 @@ dfbGetBufferSize( GLframebuffer *buffer, GLuint *width, GLuint *height )
      *height = (GLuint) data->height;
 }
 
+/**
+ * We only implement this function as a mechanism to check if the
+ * framebuffer size has changed (and update corresponding state).
+ */
 static void
 dfbSetViewport( GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h )
 {
-     _mesa_ResizeBuffersMESA();
+   GLuint newWidth, newHeight;
+   GLframebuffer *buffer = ctx->WinSysDrawBuffer;
+   dfbGetBufferSize( buffer, &newWidth, &newHeight );
+   if (buffer->Width != newWidth || buffer->Height != newHeight) {
+      _mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
+   }
 }
 
 static void
index 3a6b452065bb0f76215f20c19c22056280e947d7..bd9d3ac0ad9d589e6876ac0a8d3591b993d7efdb 100644 (file)
@@ -157,11 +157,27 @@ get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *height )
 }
 
 
+/**
+ * We only implement this function as a mechanism to check if the
+ * framebuffer size has changed (and update corresponding state).
+ */
 static void
 viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
 {
-   /* poll for window size change and realloc software Z/stencil/etc if needed */
-   _mesa_ResizeBuffersMESA();
+   GLuint newWidth, newHeight;
+   GLframebuffer *buffer;
+
+   buffer = ctx->WinSysDrawBuffer;
+   get_buffer_size( buffer, &newWidth, &newHeight );
+   if (buffer->Width != newWidth || buffer->Height != newHeight) {
+      _mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
+   }
+
+   buffer = ctx->WinSysReadBuffer;
+   get_buffer_size( buffer, &newWidth, &newHeight );
+   if (buffer->Width != newWidth || buffer->Height != newHeight) {
+      _mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
+   }
 }
 
 
index 64312204c548a75caabeee9da65cbba11de5e281..4fbbe61ab84bd7f4cde2bb6ae940445fc6c1919e 100644 (file)
@@ -257,10 +257,18 @@ static void gl_ggiGetSize(GLframebuffer *fb, GLuint *width, GLuint *height)
        printf("returning %d, %d\n", *width, *height);
 }
 
+/**
+ * We only implement this function as a mechanism to check if the
+ * framebuffer size has changed (and update corresponding state).
+ */
 static void gl_ggiViewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
 {
-   /* poll for window size change and realloc software Z/stencil/etc if needed */
-   _mesa_ResizeBuffersMESA();
+   GLuint newWidth, newHeight;
+   GLframebuffer *buffer = ctx->WinSysDrawBuffer;
+   gl_ggiGetSize( buffer, &newWidth, &newHeight );
+   if (buffer->Width != newWidth || buffer->Height != newHeight) {
+      _mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
+   }
 }
 
 
index 1614a7a43a7500ac597ce1b50c89254c751f0db6..0ee0e0cae00c9b88abb292103d89d6d7b0612960 100644 (file)
@@ -123,11 +123,19 @@ fxDDGetBufferSize(GLframebuffer *buffer, GLuint *width, GLuint *height)
 }
 
 
+/**
+ * We only implement this function as a mechanism to check if the
+ * framebuffer size has changed (and update corresponding state).
+ */
 static void
 fxDDViewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
 {
-   /* poll for window size change and realloc software Z/stencil/etc if needed */
-   _mesa_ResizeBuffersMESA();
+   GLuint newWidth, newHeight;
+   GLframebuffer *buffer = ctx->WinSysDrawBuffer;
+   fxDDGetBufferSize( buffer, &newWidth, &newHeight );
+   if (buffer->Width != newWidth || buffer->Height != newHeight) {
+      _mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
+   }
 }
 
 
index 09330e78ab535f71c3cbe1c3bd53722f1be1bd69..0dd9a144fe8b8ea660212c07d1b669fcd381d40c 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: svgamesa.c,v 1.26 2005/09/07 23:26:01 brianp Exp $ */
+/* $Id: svgamesa.c,v 1.27 2006/10/15 18:51:22 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
@@ -213,10 +213,18 @@ static void get_buffer_size( GLframebuffer *buffer, GLuint *width, GLuint *heigh
    *height = SVGAMesa->height = vga_getydim();
 }
 
+/**
+ * We only implement this function as a mechanism to check if the
+ * framebuffer size has changed (and update corresponding state).
+ */
 static void viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
 {
-   /* poll for window size change and realloc software Z/stencil/etc if needed */
-   _mesa_ResizeBuffersMESA();
+   GLuint newWidth, newHeight;
+   GLframebuffer *buffer = ctx->WinSysDrawBuffer;
+   get_buffer_size( buffer, &newWidth, &newHeight );
+   if (buffer->Width != newWidth || buffer->Height != newHeight) {
+      _mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
+   }
 }
 
 static void set_buffer( GLcontext *ctx, GLframebuffer *colorBuffer,