diff options
author | Robin Gareus <robin@gareus.org> | 2015-11-02 05:15:55 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2015-11-02 05:15:55 +0100 |
commit | 160b24b13730ff84765e79975fab80a409a55e5e (patch) | |
tree | bb96bea82d45bfebfcf061c1d36d93d85ff87f92 /libs/canvas/canvas | |
parent | 84d44eb5a3fd95f20f9c5e33ff8c05199dcccc38 (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.h | 3 |
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 |