From e19e6dc73a8dbc93a93354c1d97c39d0f4fa0f0e Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Sat, 11 Oct 2014 13:36:52 +0200 Subject: [PATCH] amend 5d0303b - fix editor summary leak --- gtk2_ardour/editor_summary.cc | 15 +++++++-------- gtk2_ardour/editor_summary.h | 1 + 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gtk2_ardour/editor_summary.cc b/gtk2_ardour/editor_summary.cc index 641b060e17..50e9311998 100644 --- a/gtk2_ardour/editor_summary.cc +++ b/gtk2_ardour/editor_summary.cc @@ -62,6 +62,11 @@ EditorSummary::EditorSummary (Editor* e) set_flags (get_flags() | Gtk::CAN_FOCUS); } +EditorSummary::~EditorSummary () +{ + cairo_surface_destroy (_image); +} + /** Handle a size allocation. * @param alloc GTK allocation. */ @@ -102,14 +107,8 @@ EditorSummary::set_session (Session* s) void EditorSummary::render_background_image () { - int stride; - unsigned char *data; - if (_image) { - free (cairo_image_surface_get_data (_image)); - } - stride = cairo_format_stride_for_width (CAIRO_FORMAT_RGB24, get_width ()); - data = (unsigned char*) malloc (stride * get_height ()); - _image = cairo_image_surface_create_for_data (data, CAIRO_FORMAT_RGB24, get_width (), get_height (), stride); + cairo_surface_destroy (_image); // passing NULL is safe + _image = cairo_image_surface_create (CAIRO_FORMAT_RGB24, get_width (), get_height ()); cairo_t* cr = cairo_create (_image); diff --git a/gtk2_ardour/editor_summary.h b/gtk2_ardour/editor_summary.h index 6f9f78d712..f2e4eb08c4 100644 --- a/gtk2_ardour/editor_summary.h +++ b/gtk2_ardour/editor_summary.h @@ -36,6 +36,7 @@ class EditorSummary : public CairoWidget, public EditorComponent, public ARDOUR: { public: EditorSummary (Editor *); + ~EditorSummary (); void set_session (ARDOUR::Session *); void set_overlays_dirty ();