diff options
author | Andreas Pokorny <[email protected]> | 2012-12-15 23:28:57 +0100 |
---|---|---|
committer | Brian Paul <[email protected]> | 2012-12-17 10:22:26 -0700 |
commit | fd65fb5aa8cceee151965c383283b038b78562cb (patch) | |
tree | 51f5223b6c162f1d971ea41b224c97363130242c | |
parent | 9b13e731fa33183b205b4bd84c69c70441867093 (diff) |
vega: fix for object handle leak
frees the object handle when a OpenVG
is destroyed.
Signed-off-by: Andreas Pokorny <[email protected]>
Signed-off-by: Brian Paul <[email protected]>
-rw-r--r-- | src/gallium/state_trackers/vega/mask.c | 1 | ||||
-rw-r--r-- | src/gallium/state_trackers/vega/paint.c | 4 | ||||
-rw-r--r-- | src/gallium/state_trackers/vega/path.c | 2 | ||||
-rw-r--r-- | 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 e46bbdd768a..ca8edd01686 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 f73e60c9e6d..79b7a277851 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 31ec7199062..a9c18435de5 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 14e3cc57551..3537f3fb8ac 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); } |