gallium: Fix build on WinXP.
[mesa.git] / src / mesa / pipe / pipebuffer / pb_buffer_fenced.c
index b2edc321ef4a3d74ba8d09a97823f0c41df39a18..4cf4222db9de8d013049c7bdaf8ec9b77c6f32ef 100644 (file)
@@ -80,7 +80,6 @@ struct fenced_buffer
    
    struct pb_buffer *buffer;
 
-   unsigned refcount;
    struct pipe_fence_handle *fence;
 
    struct list_head head;
@@ -145,8 +144,8 @@ _fenced_buffer_list_check_free(struct fenced_buffer_list *fenced_list,
 
       /* Do the delayed destroy:
        */
-      pb_destroy(fenced_buf->buffer);
-      free(fenced_buf);
+      pb_reference(&fenced_buf->buffer, NULL);
+      FREE(fenced_buf);
    }
 }
 
@@ -162,8 +161,8 @@ fenced_buffer_destroy(struct pb_buffer *buf)
       fenced_list->numDelayed++;
    }
    else {
-      pb_destroy(fenced_buf->buffer);
-      free(fenced_buf);
+      pb_reference(&fenced_buf->buffer, NULL);
+      FREE(fenced_buf);
    }
    
    if ((fenced_list->numDelayed % fenced_list->checkDelayed) == 0)
@@ -220,9 +219,13 @@ fenced_buffer_create(struct fenced_buffer_list *fenced_list,
    if(!buf)
       return NULL;
    
+   buf->base.base.refcount = 1;
+   buf->base.base.alignment = buffer->base.alignment;
+   buf->base.base.usage = buffer->base.usage;
+   buf->base.base.size = buffer->base.size;
+   
    buf->base.vtbl = &fenced_buffer_vtbl;
    buf->buffer = buffer;
-   buf->refcount = 1;
    buf->list = fenced_list;
    
    return &buf->base;