OSDN Git Service

fix xm_buffer_data
authorBrian <brian.paul@tungstengraphics.com>
Sat, 18 Aug 2007 08:22:15 +0000 (09:22 +0100)
committerBrian <brian.paul@tungstengraphics.com>
Sat, 18 Aug 2007 08:22:15 +0000 (09:22 +0100)
src/mesa/drivers/x11/xm_softpipe.c

index 09edea6..432f306 100644 (file)
@@ -51,6 +51,7 @@ struct xm_softpipe_winsys
 struct xm_buffer
 {
    int refcount;
+   int size;
    void *data;
    void *mapped;
 };
@@ -129,8 +130,12 @@ xm_buffer_data(struct pipe_winsys *pws, struct pipe_buffer_handle *buf,
                unsigned size, const void *data )
 {
    struct xm_buffer *xm_buf = xm_bo(buf);
-   assert(!xm_buf->data);
-   xm_buf->data = malloc(size);
+   if (xm_buf->size != size) {
+      if (xm_buf->data)
+         free(xm_buf->data);
+      xm_buf->data = malloc(size);
+      xm_buf->size = size;
+   }
    if (data)
       memcpy(xm_buf->data, data, size);
 }