Mesa (master): vega: fix for object handle leak

Brian Paul brianp at kemper.freedesktop.org
Mon Dec 17 17:23:23 UTC 2012


Module: Mesa
Branch: master
Commit: fd65fb5aa8cceee151965c383283b038b78562cb
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=fd65fb5aa8cceee151965c383283b038b78562cb

Author: Andreas Pokorny <andreas.pokorny at elektrobit.com>
Date:   Sat Dec 15 23:28:57 2012 +0100

vega: fix for object handle leak

frees the object handle when a OpenVG
is destroyed.

Signed-off-by: Andreas Pokorny <andreas.pokorny at elektrobit.com>
Signed-off-by: Brian Paul <brianp at vmware.com>

---

 src/gallium/state_trackers/vega/mask.c  |    1 +
 src/gallium/state_trackers/vega/paint.c |    4 +++-
 src/gallium/state_trackers/vega/path.c  |    2 ++
 src/gallium/state_trackers/vega/text.c  |    2 ++
 4 files changed, 8 insertions(+), 1 deletions(-)

diff --git a/src/gallium/state_trackers/vega/mask.c b/src/gallium/state_trackers/vega/mask.c
index e46bbdd..ca8edd0 100644
--- a/src/gallium/state_trackers/vega/mask.c
+++ b/src/gallium/state_trackers/vega/mask.c
@@ -376,6 +376,7 @@ void mask_layer_destroy(struct vg_mask_layer *layer)
 
    vg_context_remove_object(ctx, &layer->base);
    pipe_sampler_view_reference(&layer->sampler_view, NULL);
+   vg_free_object(&layer->base);
    FREE(layer);
 }
 
diff --git a/src/gallium/state_trackers/vega/paint.c b/src/gallium/state_trackers/vega/paint.c
index f73e60c..79b7a27 100644
--- a/src/gallium/state_trackers/vega/paint.c
+++ b/src/gallium/state_trackers/vega/paint.c
@@ -229,8 +229,10 @@ void paint_destroy(struct vg_paint *paint)
    pipe_sampler_view_reference(&paint->gradient.sampler_view, NULL);
    if (paint->pattern.sampler_view)
       pipe_sampler_view_reference(&paint->pattern.sampler_view, NULL);
-   if (ctx)
+   if (ctx) {
       vg_context_remove_object(ctx, &paint->base);
+      vg_free_object(&paint->base);
+   }
 
    free(paint->gradient.ramp_stopsi);
    free(paint->gradient.ramp_stops);
diff --git a/src/gallium/state_trackers/vega/path.c b/src/gallium/state_trackers/vega/path.c
index 31ec719..a9c1843 100644
--- a/src/gallium/state_trackers/vega/path.c
+++ b/src/gallium/state_trackers/vega/path.c
@@ -234,6 +234,8 @@ void path_destroy(struct path *p)
    if (p->stroked.path)
       path_destroy(p->stroked.path);
 
+   vg_free_object(&p->base);
+
    FREE(p);
 }
 
diff --git a/src/gallium/state_trackers/vega/text.c b/src/gallium/state_trackers/vega/text.c
index 14e3cc5..3537f3f 100644
--- a/src/gallium/state_trackers/vega/text.c
+++ b/src/gallium/state_trackers/vega/text.c
@@ -157,6 +157,8 @@ void font_destroy(struct vg_font *font)
    }
    cso_hash_delete(font->glyphs);
 
+   vg_free_object(&font->base);
+
    FREE(font);
 }
 




More information about the mesa-commit mailing list