summaryrefslogtreecommitdiff
path: root/libs/canvas/canvas
diff options
context:
space:
mode:
authorRobin Gareus <robin@gareus.org>2015-11-02 05:15:55 +0100
committerRobin Gareus <robin@gareus.org>2015-11-02 05:15:55 +0100
commit160b24b13730ff84765e79975fab80a409a55e5e (patch)
treebb96bea82d45bfebfcf061c1d36d93d85ff87f92 /libs/canvas/canvas
parent84d44eb5a3fd95f20f9c5e33ff8c05199dcccc38 (diff)
fix crash when cleaning up canvas items
Backport from Mixbus. In Ardour this does not currently matter since there is no top-level canvas destroyed top-down. ... Editor::session_going_away MixerStrip::~MixerStrip MixbusStripCanvas::~MixbusStripCanvas ArdourCanvas::GtkCanvas::~GtkCanvas ArdourCanvas::Canvas::~Canvas ArdourCanvas::Root::~Root ArdourCanvas::Container::~Container ArdourCanvas::Item::~Item ArdourCanvas::Item::clear_items GtkCanvas::item_going_away() queue_draw_item_area() ..expose can take place async to garbage collection: crash in one of the items.
Diffstat (limited to 'libs/canvas/canvas')
-rw-r--r--libs/canvas/canvas/canvas.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/libs/canvas/canvas/canvas.h b/libs/canvas/canvas/canvas.h
index 87e580e046..b818c7eb41 100644
--- a/libs/canvas/canvas/canvas.h
+++ b/libs/canvas/canvas/canvas.h
@@ -172,6 +172,7 @@ class LIBCANVAS_API GtkCanvas : public Canvas, public Gtk::EventBox
{
public:
GtkCanvas ();
+ ~GtkCanvas () { _in_dtor = true ; }
void request_redraw (Rect const &);
void request_size (Duple);
@@ -238,6 +239,8 @@ private:
bool show_tooltip ();
void hide_tooltip ();
bool really_start_tooltip_timeout ();
+
+ bool _in_dtor;
};
/** A GTK::Alignment with a GtkCanvas inside it plus some Gtk::Adjustments for