From 44cae0a62439d7f58a50920dcbd01f9f306ff1a2 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Sun, 7 Oct 2018 12:29:52 -0400 Subject: delete transport masters from an idle callback --- gtk2_ardour/transport_masters_dialog.cc | 16 ++++++++++++++-- gtk2_ardour/transport_masters_dialog.h | 2 ++ 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'gtk2_ardour') diff --git a/gtk2_ardour/transport_masters_dialog.cc b/gtk2_ardour/transport_masters_dialog.cc index 3b16007aca..ec2a028ba4 100644 --- a/gtk2_ardour/transport_masters_dialog.cc +++ b/gtk2_ardour/transport_masters_dialog.cc @@ -256,10 +256,22 @@ TransportMastersWidget::Row::name_press (GdkEventButton* ev) return false; } +gboolean +TransportMastersWidget::Row::_idle_remove (gpointer arg) +{ + TransportMastersWidget::Row* row = (TransportMastersWidget::Row*) arg; + TransportMasterManager::instance().remove (row->tm->name()); + + return FALSE; /* do not call again */ +} + void TransportMastersWidget::Row::remove_clicked () { - TransportMasterManager::instance().remove (tm->name()); + /* have to do this via an idle callback, because it will destroy the + widget from which this callback was initiated. + */ + g_idle_add_full (G_PRIORITY_HIGH_IDLE + 10, _idle_remove, this, NULL); } void @@ -519,7 +531,7 @@ TransportMastersWidget::Row::update (Session* s, samplepos_t now) } void - TransportMastersWidget::update (samplepos_t /* audible */) +TransportMastersWidget::update (samplepos_t /* audible */) { samplepos_t now = AudioEngine::instance()->sample_time (); diff --git a/gtk2_ardour/transport_masters_dialog.h b/gtk2_ardour/transport_masters_dialog.h index ee6f1cfdb1..1d20dfee15 100644 --- a/gtk2_ardour/transport_masters_dialog.h +++ b/gtk2_ardour/transport_masters_dialog.h @@ -126,6 +126,8 @@ class TransportMastersWidget : public Gtk::VBox, public ARDOUR::SessionHandlePtr void prop_change (PBD::PropertyChange); void remove_clicked (); + static gboolean _idle_remove (gpointer arg); + bool name_press (GdkEventButton*); void name_edited (std::string, int); -- cgit v1.2.3