add a plugin-death connection
at application exit, there may otherwise be a race condition, queue draw could be scheduled for a widget that's no longer present.
This commit is contained in:
parent
a450024c56
commit
901f8caf22
|
@ -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 ());
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue