struct pb_buffer *buffer;
- unsigned refcount;
struct pipe_fence_handle *fence;
struct list_head head;
/* Do the delayed destroy:
*/
- pb_destroy(fenced_buf->buffer);
- free(fenced_buf);
+ pb_reference(&fenced_buf->buffer, NULL);
+ FREE(fenced_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)
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;