Some code movement so that the gl_framebuffer is fully initialized before
authorBrian Paul <brian.paul@tungstengraphics.com>
Sat, 14 Oct 2006 23:02:26 +0000 (23:02 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sat, 14 Oct 2006 23:02:26 +0000 (23:02 +0000)
calling _mesa_make_current() to avoid hitting the initialize_framebuffer_size()
stuff in context.c

src/mesa/drivers/osmesa/osmesa.c

index 942692c8bb0c04816c3b2131ee3d4b07e5611ac4..4ac5a043fa6b6f69147f28b59854f2794914593e 100644 (file)
@@ -1376,21 +1376,25 @@ OSMesaMakeCurrent( OSMesaContext osmesa, void *buffer, GLenum type,
     */
    _glapi_check_multithread();
 
+   /* Set the framebuffer's size.  This causes the
+    * osmesa_renderbuffer_storage() function to get called.
+    */
+   _mesa_resize_framebuffer(&osmesa->mesa, osmesa->gl_buffer, width, height);
+   osmesa->gl_buffer->Initialized = GL_TRUE; /* XXX TEMPORARY? */
+
    _mesa_make_current( &osmesa->mesa, osmesa->gl_buffer, osmesa->gl_buffer );
 
+   /* Set the color renderbuffer's pointer to the user buffer,
+    * update row pointers, etc.
+    */
    if (osmesa->userRowLength)
       osmesa->rowlength = osmesa->userRowLength;
    else
       osmesa->rowlength = width;
-
    osmesa->rb->Data = buffer;
    osmesa->rb->DataType = type;
    compute_row_addresses( osmesa );
 
-   /* update the color renderbuffer's format, type, width, height */
-   osmesa_renderbuffer_storage(&osmesa->mesa, osmesa->rb,
-                               osmesa->rb->InternalFormat, width, height);
-
    /* Remove renderbuffer attachment, then re-add.  This installs the
     * renderbuffer adaptor/wrapper if needed.
     */