summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/editor_summary.cc15
-rw-r--r--gtk2_ardour/editor_summary.h1
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 ();