rbug: Fix surface reference leak
authorJakob Bornecrantz <jakob@vmware.com>
Thu, 16 Dec 2010 04:33:46 +0000 (05:33 +0100)
committerJakob Bornecrantz <jakob@vmware.com>
Mon, 24 Jan 2011 23:58:46 +0000 (00:58 +0100)
src/gallium/drivers/rbug/rbug_objects.c

index 7d7cc48..15f5db4 100644 (file)
@@ -98,8 +98,9 @@ rbug_surface_create(struct rbug_context *rb_context,
 
    pipe_reference_init(&rb_surface->base.reference, 1);
    rb_surface->base.texture = NULL;
+   rb_surface->base.context = &rb_context->base;
+   rb_surface->surface = surface; /* we own the surface already */
    pipe_resource_reference(&rb_surface->base.texture, &rb_resource->base);
-   rb_surface->surface = surface;
 
    return &rb_surface->base;
 
@@ -113,8 +114,7 @@ rbug_surface_destroy(struct rbug_context *rb_context,
                      struct rbug_surface *rb_surface)
 {
    pipe_resource_reference(&rb_surface->base.texture, NULL);
-   rb_context->pipe->surface_destroy(rb_context->pipe,
-                                     rb_surface->surface);
+   pipe_surface_reference(&rb_surface->surface, NULL);
    FREE(rb_surface);
 }