diff options
author | Thomas White <taw@bitwiz.org.uk> | 2012-12-06 16:45:30 +0100 |
---|---|---|
committer | Thomas White <taw@bitwiz.org.uk> | 2012-12-06 16:45:30 +0100 |
commit | dbe8beafe6f0ab6d282f1ab6c1462815cb79ab87 (patch) | |
tree | 35c1961da426719b2587b13a9ffe50f137af7f88 /src/render.c | |
parent | 548c13ce48b7d78ac566968568b2e34474b10ab9 (diff) |
Fix some memory leaks
Diffstat (limited to 'src/render.c')
-rw-r--r-- | src/render.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/render.c b/src/render.c index 8546639..b5f4bd2 100644 --- a/src/render.c +++ b/src/render.c @@ -264,6 +264,32 @@ static int render_frame(struct frame *fr, cairo_t *cr, } +void recursive_buffer_free(struct frame *fr) +{ + int i; + + for ( i=0; i<fr->num_children; i++ ) { + recursive_buffer_free(fr->children[i]); + } + + if ( fr->contents != NULL ) { + cairo_surface_destroy(fr->contents); + fr->contents = NULL; + } +} + + +void free_render_buffers(struct slide *s) +{ + recursive_buffer_free(s->top); + if ( s->rendered_edit != NULL ) cairo_surface_destroy(s->rendered_edit); + if ( s->rendered_proj != NULL ) cairo_surface_destroy(s->rendered_proj); + if ( s->rendered_thumb != NULL ) { + cairo_surface_destroy(s->rendered_thumb); + } +} + + static void do_composite(struct frame *fr, cairo_t *cr) { if ( fr->contents == NULL ) return; |