diff options
-rw-r--r-- | gtk2_ardour/processor_box.cc | 1 | ||||
-rw-r--r-- | gtk2_ardour/processor_box.h | 5 |
2 files changed, 6 insertions, 0 deletions
diff --git a/gtk2_ardour/processor_box.cc b/gtk2_ardour/processor_box.cc index c01d9e497c..4ba27f10a6 100644 --- a/gtk2_ardour/processor_box.cc +++ b/gtk2_ardour/processor_box.cc @@ -1518,6 +1518,7 @@ ProcessorEntry::PluginDisplay::PluginDisplay (ProcessorEntry& e, boost::shared_p { set_name ("processor prefader"); add_events (Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); + _plug->DropReferences.connect (_death_connection, invalidator (*this), boost::bind (&PluginDisplay::plugin_going_away, this), gui_context()); _plug->QueueDraw.connect (_qdraw_connection, invalidator (*this), boost::bind (&Gtk::Widget::queue_draw, this), gui_context ()); diff --git a/gtk2_ardour/processor_box.h b/gtk2_ardour/processor_box.h index 27c529980f..5dd7483be4 100644 --- a/gtk2_ardour/processor_box.h +++ b/gtk2_ardour/processor_box.h @@ -250,12 +250,17 @@ private: bool on_button_press_event (GdkEventButton *ev); bool on_button_release_event (GdkEventButton *ev); + void plugin_going_away () { + _qdraw_connection.disconnect (); + } + void update_height_alloc (uint32_t inline_height); virtual uint32_t render_inline (cairo_t *, uint32_t width); ProcessorEntry& _entry; boost::shared_ptr<ARDOUR::Plugin> _plug; PBD::ScopedConnection _qdraw_connection; + PBD::ScopedConnection _death_connection; cairo_surface_t* _surf; uint32_t _max_height; uint32_t _cur_height; |