X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=gtk2_ardour%2Fmixer_strip.cc;h=94c876cfcdd7c2666c7397cacb447ea5a260d560;hb=b5148d93d5a9e6949f82f8685cab50cb772f2b9d;hp=5b26bd51412bd89861dc0fc1455e174b8ada1c5d;hpb=78503905d774ced7354ef95bc638829d315f1311;p=ardour.git diff --git a/gtk2_ardour/mixer_strip.cc b/gtk2_ardour/mixer_strip.cc index 5b26bd5141..94c876cfcd 100644 --- a/gtk2_ardour/mixer_strip.cc +++ b/gtk2_ardour/mixer_strip.cc @@ -63,7 +63,6 @@ #include "i18n.h" -using namespace sigc; using namespace ARDOUR; using namespace PBD; using namespace Gtk; @@ -73,14 +72,15 @@ using namespace std; sigc::signal > MixerStrip::SwitchIO; int MixerStrip::scrollbar_height = 0; +PBD::Signal1 MixerStrip::CatchDeletion; -MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, bool in_mixer) +MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, bool in_mixer) : AxisView(sess) , RouteUI (sess) ,_mixer(mx) , _mixer_owned (in_mixer) - , processor_box (sess, sigc::mem_fun(*this, &MixerStrip::plugin_selector), mx.selection(), this, in_mixer) - , gpm (sess) + , processor_box (sess, boost::bind (&MixerStrip::plugin_selector, this), mx.selection(), this, in_mixer) + , gpm (sess, 250) , panners (sess) , _mono_button (_("Mono")) , button_table (3, 2) @@ -100,13 +100,13 @@ MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, bool in_mixer) } } -MixerStrip::MixerStrip (Mixer_UI& mx, Session& sess, boost::shared_ptr rt, bool in_mixer) +MixerStrip::MixerStrip (Mixer_UI& mx, Session* sess, boost::shared_ptr rt, bool in_mixer) : AxisView(sess) , RouteUI (sess) ,_mixer(mx) , _mixer_owned (in_mixer) , processor_box (sess, sigc::mem_fun(*this, &MixerStrip::plugin_selector), mx.selection(), this, in_mixer) - , gpm (sess) + , gpm (sess, 250) , panners (sess) , button_table (3, 2) , middle_button_table (1, 2) @@ -134,6 +134,9 @@ MixerStrip::init () _width_owner = 0; spacer = 0; + /* the length of this string determines the width of the mixer strip when it is set to `wide' */ + longest_label = "longest label"; + Gtk::Image* img; img = manage (new Gtk::Image (::get_icon("strip_width"))); @@ -151,14 +154,15 @@ MixerStrip::init () input_button.add (input_label); input_button.set_name ("MixerIOButton"); input_label.set_name ("MixerIOButtonLabel"); - Gtkmm2ext::set_size_request_to_display_given_text (input_button, "longest label", 4, 4); + + Gtkmm2ext::set_size_request_to_display_given_text (input_button, longest_label.c_str(), 4, 4); output_label.set_text (_("Output")); ARDOUR_UI::instance()->set_tip (&output_button, _("Button 1 to choose outputs from a port matrix, button 3 to select inputs from a menu"), ""); output_button.add (output_label); output_button.set_name ("MixerIOButton"); output_label.set_name ("MixerIOButtonLabel"); - Gtkmm2ext::set_size_request_to_display_given_text (output_button, "longest label", 4, 4); + Gtkmm2ext::set_size_request_to_display_given_text (output_button, longest_label.c_str(), 4, 4); ARDOUR_UI::instance()->set_tip (&meter_point_button, _("Select metering point"), ""); meter_point_button.add (meter_point_label); @@ -172,8 +176,8 @@ MixerStrip::init () bottom_button_table.attach (meter_point_button, 1, 2, 0, 1); - meter_point_button.signal_button_press_event().connect (mem_fun (gpm, &GainMeter::meter_press), false); - meter_point_button.signal_button_release_event().connect (mem_fun (gpm, &GainMeter::meter_release), false); + meter_point_button.signal_button_press_event().connect (sigc::mem_fun (gpm, &GainMeter::meter_press), false); + meter_point_button.signal_button_release_event().connect (sigc::mem_fun (gpm, &GainMeter::meter_release), false); hide_button.set_events (hide_button.get_events() & ~(Gdk::ENTER_NOTIFY_MASK|Gdk::LEAVE_NOTIFY_MASK)); @@ -197,7 +201,7 @@ MixerStrip::init () name_button.add (name_label); name_button.set_name ("MixerNameButton"); - Gtkmm2ext::set_size_request_to_display_given_text (name_button, "longest label", 2, 2); + Gtkmm2ext::set_size_request_to_display_given_text (name_button, longest_label.c_str(), 2, 2); name_label.set_name ("MixerNameButtonLabel"); ARDOUR_UI::instance()->set_tip (&group_button, _("Mix group"), ""); @@ -207,7 +211,7 @@ MixerStrip::init () comment_button.set_name ("MixerCommentButton"); - comment_button.signal_clicked().connect (mem_fun(*this, &MixerStrip::comment_button_clicked)); + comment_button.signal_clicked().connect (sigc::mem_fun(*this, &MixerStrip::comment_button_clicked)); global_vpacker.set_border_width (0); global_vpacker.set_spacing (0); @@ -216,8 +220,8 @@ MixerStrip::init () hide_button.set_name ("MixerHideButton"); top_event_box.set_name ("MixerTopEventBox"); - width_button.signal_clicked().connect (mem_fun(*this, &MixerStrip::width_clicked)); - hide_button.signal_clicked().connect (mem_fun(*this, &MixerStrip::hide_clicked)); + width_button.signal_clicked().connect (sigc::mem_fun(*this, &MixerStrip::width_clicked)); + hide_button.signal_clicked().connect (sigc::mem_fun(*this, &MixerStrip::hide_clicked)); width_hide_box.pack_start (width_button, false, true); width_hide_box.pack_start (top_event_box, true, true); @@ -254,32 +258,22 @@ MixerStrip::init () _packed = false; _embedded = false; - _session.engine().Stopped.connect (mem_fun(*this, &MixerStrip::engine_stopped)); - _session.engine().Running.connect (mem_fun(*this, &MixerStrip::engine_running)); + _session->engine().Stopped.connect (*this, boost::bind (&MixerStrip::engine_stopped, this), gui_context()); + _session->engine().Running.connect (*this, boost::bind (&MixerStrip::engine_running, this), gui_context()); - input_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::input_press), false); - output_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::output_press), false); - - solo_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::solo_press), false); - solo_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::solo_release), false); - mute_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::mute_press), false); - mute_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::mute_release), false); + input_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::input_press), false); + output_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::output_press), false); /* we don't need this if its not an audio track, but we don't know that yet and it doesn't hurt (much). */ rec_enable_button->set_name ("MixerRecordEnableButton"); - rec_enable_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::rec_enable_press), false); - rec_enable_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::rec_enable_release)); /* ditto for this button and busses */ - show_sends_button->signal_button_press_event().connect (mem_fun(*this, &RouteUI::show_sends_press), false); - show_sends_button->signal_button_release_event().connect (mem_fun(*this, &RouteUI::show_sends_release)); - - name_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::name_button_button_press), false); - group_button.signal_button_press_event().connect (mem_fun(*this, &MixerStrip::select_route_group), false); + name_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::name_button_button_press), false); + group_button.signal_button_press_event().connect (sigc::mem_fun(*this, &MixerStrip::select_route_group), false); _width = (Width) -1; @@ -304,12 +298,12 @@ MixerStrip::init () set_flags (get_flags() | Gtk::CAN_FOCUS); - SwitchIO.connect (mem_fun (*this, &MixerStrip::switch_io)); + SwitchIO.connect (sigc::mem_fun (*this, &MixerStrip::switch_io)); } MixerStrip::~MixerStrip () { - GoingAway(); /* EMIT_SIGNAL */ + CatchDeletion (this); delete input_selector; delete output_selector; @@ -360,10 +354,10 @@ MixerStrip::set_route (boost::shared_ptr rt) boost::shared_ptr at = audio_track(); - connections.push_back (at->FreezeChange.connect (mem_fun(*this, &MixerStrip::map_frozen))); + at->FreezeChange.connect (route_connections, boost::bind (&MixerStrip::map_frozen, this), gui_context()); button_table.attach (*rec_enable_button, 0, 2, 2, 3); - rec_enable_button->set_sensitive (_session.writable()); + rec_enable_button->set_sensitive (_session->writable()); rec_enable_button->show(); } else if (!is_track()) { @@ -382,7 +376,7 @@ MixerStrip::set_route (boost::shared_ptr rt) } _mono_button.set_name ("MixerMonoButton"); - _mono_button.signal_clicked().connect (mem_fun (*this, &MixerStrip::mono_button_clicked)); + _mono_button.signal_clicked().connect (sigc::mem_fun (*this, &MixerStrip::mono_button_clicked)); switch (_route->meter_point()) { case MeterInput: @@ -405,46 +399,35 @@ MixerStrip::set_route (boost::shared_ptr rt) delete route_ops_menu; route_ops_menu = 0; - ARDOUR_UI::instance()->tooltips().set_tip (comment_button, _route->comment().empty() ? + ARDOUR_UI::instance()->set_tip (comment_button, _route->comment().empty() ? _("Click to Add/Edit Comments"): _route->comment()); - connections.push_back (_route->meter_change.connect ( - mem_fun(*this, &MixerStrip::meter_changed))); - connections.push_back (_route->input()->changed.connect ( - mem_fun(*this, &MixerStrip::input_changed))); - connections.push_back (_route->output()->changed.connect ( - mem_fun(*this, &MixerStrip::output_changed))); - connections.push_back (_route->route_group_changed.connect ( - mem_fun(*this, &MixerStrip::route_group_changed))); + _route->meter_change.connect (route_connections, ui_bind (&MixerStrip::meter_changed, this, _1), gui_context()); + _route->input()->changed.connect (route_connections, ui_bind (&MixerStrip::input_changed, this, _1, _2), gui_context()); + _route->output()->changed.connect (route_connections, ui_bind (&MixerStrip::output_changed, this, _1, _2), gui_context()); + _route->route_group_changed.connect (route_connections, boost::bind (&MixerStrip::route_group_changed, this), gui_context()); if (_route->panner()) { - connections.push_back (_route->panner()->Changed.connect ( - mem_fun(*this, &MixerStrip::connect_to_pan))); + _route->panner()->Changed.connect (route_connections, boost::bind (&MixerStrip::connect_to_pan, this), gui_context()); } if (is_audio_track()) { - connections.push_back (audio_track()->DiskstreamChanged.connect ( - mem_fun(*this, &MixerStrip::diskstream_changed))); + audio_track()->DiskstreamChanged.connect (route_connections, boost::bind (&MixerStrip::diskstream_changed, this), gui_context()); } - connections.push_back (_route->NameChanged.connect ( - mem_fun(*this, &RouteUI::name_changed))); - connections.push_back (_route->comment_changed.connect ( - mem_fun(*this, &MixerStrip::comment_changed))); - connections.push_back (_route->gui_changed.connect ( - mem_fun(*this, &MixerStrip::route_gui_changed))); + _route->comment_changed.connect (route_connections, ui_bind (&MixerStrip::comment_changed, this, _1), gui_context()); + _route->gui_changed.connect (route_connections, ui_bind (&MixerStrip::route_gui_changed, this, _1, _2), gui_context()); set_stuff_from_route (); /* now force an update of all the various elements */ - processor_box.update(); mute_changed (0); solo_changed (0); name_changed (); comment_changed (0); - route_group_changed (0); + route_group_changed (); connect_to_pan (); @@ -526,7 +509,6 @@ MixerStrip::set_width_enum (Width w, void* owner) gpm.set_width (w); panners.set_width (w); - processor_box.set_width (w); boost::shared_ptr gain_automation = _route->gain_control()->alist(); @@ -597,13 +579,16 @@ MixerStrip::set_width_enum (Width w, void* owner) panners.short_astate_string(_route->panner()->automation_state())); } - Gtkmm2ext::set_size_request_to_display_given_text (name_button, "longest label", 2, 2); + Gtkmm2ext::set_size_request_to_display_given_text (name_button, longest_label.c_str(), 2, 2); set_size_request (max (50, gpm.get_gm_width()), -1); break; } + + processor_box.set_width (w); + update_input_display (); update_output_display (); - route_group_changed (0); + route_group_changed (); name_changed (); WidthChanged (); } @@ -627,7 +612,7 @@ gint MixerStrip::output_press (GdkEventButton *ev) { using namespace Menu_Helpers; - if (!_session.engine().connected()) { + if (!_session->engine().connected()) { MessageDialog msg (_("Not connected to JACK - no I/O changes are possible")); msg.run (); return true; @@ -646,12 +631,12 @@ MixerStrip::output_press (GdkEventButton *ev) citems.clear (); output_menu_bundles.clear (); - citems.push_back (MenuElem (_("Disconnect"), mem_fun (*(static_cast(this)), &RouteUI::disconnect_output))); + citems.push_back (MenuElem (_("Disconnect"), sigc::mem_fun (*(static_cast(this)), &RouteUI::disconnect_output))); citems.push_back (SeparatorElem()); ARDOUR::BundleList current = _route->output()->bundles_connected (); - boost::shared_ptr b = _session.bundles (); + boost::shared_ptr b = _session->bundles (); /* give user bundles first chance at being in the menu */ @@ -667,7 +652,7 @@ MixerStrip::output_press (GdkEventButton *ev) } } - boost::shared_ptr routes = _session.get_routes (); + boost::shared_ptr routes = _session->get_routes (); for (ARDOUR::RouteList::const_iterator i = routes->begin(); i != routes->end(); ++i) { maybe_add_bundle_to_output_menu ((*i)->input()->bundle(), current); } @@ -738,7 +723,7 @@ MixerStrip::input_press (GdkEventButton *ev) input_menu.set_name ("ArdourContextMenu"); citems.clear(); - if (!_session.engine().connected()) { + if (!_session->engine().connected()) { MessageDialog msg (_("Not connected to JACK - no I/O changes are possible")); msg.run (); return true; @@ -752,13 +737,13 @@ MixerStrip::input_press (GdkEventButton *ev) case 3: { - citems.push_back (MenuElem (_("Disconnect"), mem_fun (*(static_cast(this)), &RouteUI::disconnect_input))); + citems.push_back (MenuElem (_("Disconnect"), sigc::mem_fun (*(static_cast(this)), &RouteUI::disconnect_input))); citems.push_back (SeparatorElem()); input_menu_bundles.clear (); ARDOUR::BundleList current = _route->input()->bundles_connected (); - boost::shared_ptr b = _session.bundles (); + boost::shared_ptr b = _session->bundles (); /* give user bundles first chance at being in the menu */ @@ -774,7 +759,7 @@ MixerStrip::input_press (GdkEventButton *ev) } } - boost::shared_ptr routes = _session.get_routes (); + boost::shared_ptr routes = _session->get_routes (); for (ARDOUR::RouteList::const_iterator i = routes->begin(); i != routes->end(); ++i) { maybe_add_bundle_to_input_menu ((*i)->output()->bundle(), current); } @@ -853,7 +838,7 @@ MixerStrip::maybe_add_bundle_to_input_menu (boost::shared_ptr b, ARDOUR: std::string n = b->name (); replace_all (n, "_", " "); - citems.push_back (CheckMenuElem (n, bind (mem_fun(*this, &MixerStrip::bundle_input_toggled), b))); + citems.push_back (CheckMenuElem (n, sigc::bind (sigc::mem_fun(*this, &MixerStrip::bundle_input_toggled), b))); if (std::find (current.begin(), current.end(), b) != current.end()) { ignore_toggle = true; @@ -890,7 +875,7 @@ MixerStrip::maybe_add_bundle_to_output_menu (boost::shared_ptr b, ARDOUR std::string n = b->name (); replace_all (n, "_", " "); - citems.push_back (CheckMenuElem (n, bind (mem_fun(*this, &MixerStrip::bundle_output_toggled), b))); + citems.push_back (CheckMenuElem (n, sigc::bind (sigc::mem_fun(*this, &MixerStrip::bundle_output_toggled), b))); if (std::find (current.begin(), current.end(), b) != current.end()) { ignore_toggle = true; @@ -919,7 +904,7 @@ MixerStrip::update_diskstream_display () void MixerStrip::connect_to_pan () { - ENSURE_GUI_THREAD(mem_fun(*this, &MixerStrip::connect_to_pan)); + ENSURE_GUI_THREAD (*this, &MixerStrip::connect_to_pan) panstate_connection.disconnect (); panstyle_connection.disconnect (); @@ -930,11 +915,11 @@ MixerStrip::connect_to_pan () boost::shared_ptr pan_control = boost::dynamic_pointer_cast( - _route->panner()->data().control(Evoral::Parameter(PanAutomation))); + _route->panner()->control(Evoral::Parameter(PanAutomation))); if (pan_control) { - panstate_connection = pan_control->alist()->automation_state_changed.connect (mem_fun(panners, &PannerUI::pan_automation_state_changed)); - panstyle_connection = pan_control->alist()->automation_style_changed.connect (mem_fun(panners, &PannerUI::pan_automation_style_changed)); + pan_control->alist()->automation_state_changed.connect (panstate_connection, boost::bind (&PannerUI::pan_automation_state_changed, &panners), gui_context()); + pan_control->alist()->automation_style_changed.connect (panstyle_connection, boost::bind (&PannerUI::pan_automation_style_changed, &panners), gui_context()); } panners.pan_changed (this); @@ -986,7 +971,7 @@ MixerStrip::update_io_button (boost::shared_ptr route, Width widt uint32_t io_count; uint32_t io_index; Port *port; - vector connections; + vector port_connections; uint32_t total_connection_count = 0; uint32_t io_connection_count = 0; @@ -1024,13 +1009,13 @@ MixerStrip::update_io_button (boost::shared_ptr route, Width widt } else { port = route->output()->nth (io_index); } - - connections.clear (); - port->get_connections(connections); + + port_connections.clear (); + port->get_connections(port_connections); io_connection_count = 0; - if (!connections.empty()) { - for (vector::iterator i = connections.begin(); i != connections.end(); ++i) { + if (!port_connections.empty()) { + for (vector::iterator i = port_connections.begin(); i != port_connections.end(); ++i) { string& connection_name (*i); if (io_connection_count == 0) { @@ -1177,20 +1162,20 @@ MixerStrip::fast_update () void MixerStrip::diskstream_changed () { - Gtkmm2ext::UI::instance()->call_slot (mem_fun(*this, &MixerStrip::update_diskstream_display)); + Gtkmm2ext::UI::instance()->call_slot (boost::bind (&MixerStrip::update_diskstream_display, this)); } void MixerStrip::input_changed (IOChange /*change*/, void */*src*/) { - Gtkmm2ext::UI::instance()->call_slot (mem_fun(*this, &MixerStrip::update_input_display)); + Gtkmm2ext::UI::instance()->call_slot (boost::bind (&MixerStrip::update_input_display, this)); set_width_enum (_width, this); } void MixerStrip::output_changed (IOChange /*change*/, void */*src*/) { - Gtkmm2ext::UI::instance()->call_slot (mem_fun(*this, &MixerStrip::update_output_display)); + Gtkmm2ext::UI::instance()->call_slot (boost::bind (&MixerStrip::update_output_display, this)); set_width_enum (_width, this); } @@ -1225,7 +1210,7 @@ MixerStrip::comment_editor_done_editing() break; } - ARDOUR_UI::instance()->tooltips().set_tip (comment_button, + ARDOUR_UI::instance()->set_tip (comment_button, str.empty() ? _("Click to Add/Edit Comments") : str); } @@ -1267,7 +1252,7 @@ MixerStrip::setup_comment_editor () comment_window = new ArdourDialog (title, false); comment_window->set_position (Gtk::WIN_POS_MOUSE); comment_window->set_skip_taskbar_hint (true); - comment_window->signal_hide().connect (mem_fun(*this, &MixerStrip::comment_editor_done_editing)); + comment_window->signal_hide().connect (sigc::mem_fun(*this, &MixerStrip::comment_editor_done_editing)); comment_area = manage (new TextView()); comment_area->set_name ("MixerTrackCommentArea"); @@ -1284,7 +1269,7 @@ MixerStrip::setup_comment_editor () void MixerStrip::comment_changed (void *src) { - ENSURE_GUI_THREAD(bind (mem_fun(*this, &MixerStrip::comment_changed), src)); + ENSURE_GUI_THREAD (*this, &MixerStrip::comment_changed, src) if (src != this) { ignore_comment_edit = true; @@ -1298,7 +1283,7 @@ MixerStrip::comment_changed (void *src) void MixerStrip::set_route_group (RouteGroup *rg) { - _route->set_route_group (rg, this); + rg->add (_route); } bool @@ -1315,7 +1300,7 @@ MixerStrip::select_route_group (GdkEventButton *ev) (RouteGroup::Property) (RouteGroup::Gain | RouteGroup::Mute | RouteGroup::Solo) ); - group_menu->GroupSelected.connect (mem_fun (*this, &MixerStrip::set_route_group)); + group_menu->GroupSelected.connect (sigc::mem_fun (*this, &MixerStrip::set_route_group)); } group_menu->popup (1, ev->time); @@ -1325,9 +1310,9 @@ MixerStrip::select_route_group (GdkEventButton *ev) } void -MixerStrip::route_group_changed (void *ignored) +MixerStrip::route_group_changed () { - ENSURE_GUI_THREAD(bind (mem_fun(*this, &MixerStrip::route_group_changed), ignored)); + ENSURE_GUI_THREAD (*this, &MixerStrip::route_group_changed) RouteGroup *rg = _route->route_group(); @@ -1354,7 +1339,7 @@ MixerStrip::route_group_changed (void *ignored) void MixerStrip::route_gui_changed (string what_changed, void* ignored) { - ENSURE_GUI_THREAD(bind (mem_fun(*this, &MixerStrip::route_gui_changed), what_changed, ignored)); + ENSURE_GUI_THREAD (*this, &MixerStrip::route_gui_changed, what_changed, ignored) if (what_changed == "color") { if (set_color_from_route () == 0) { @@ -1386,33 +1371,33 @@ MixerStrip::build_route_ops_menu () MenuList& items = route_ops_menu->items(); - items.push_back (MenuElem (_("Save As Template"), mem_fun(*this, &RouteUI::save_as_template))); - items.push_back (MenuElem (_("Rename"), mem_fun(*this, &RouteUI::route_rename))); + items.push_back (MenuElem (_("Save As Template"), sigc::mem_fun(*this, &RouteUI::save_as_template))); + items.push_back (MenuElem (_("Rename"), sigc::mem_fun(*this, &RouteUI::route_rename))); rename_menu_item = &items.back(); items.push_back (SeparatorElem()); - items.push_back (CheckMenuElem (_("Active"), mem_fun (*this, &RouteUI::toggle_route_active))); + items.push_back (CheckMenuElem (_("Active"), sigc::mem_fun (*this, &RouteUI::toggle_route_active))); route_active_menu_item = dynamic_cast (&items.back()); route_active_menu_item->set_active (_route->active()); items.push_back (SeparatorElem()); - items.push_back (MenuElem (_("Adjust latency"), mem_fun (*this, &RouteUI::adjust_latency))); + items.push_back (MenuElem (_("Adjust latency"), sigc::mem_fun (*this, &RouteUI::adjust_latency))); items.push_back (SeparatorElem()); - items.push_back (CheckMenuElem (_("Invert Polarity"), mem_fun (*this, &RouteUI::toggle_polarity))); + items.push_back (CheckMenuElem (_("Invert Polarity"), sigc::mem_fun (*this, &RouteUI::toggle_polarity))); polarity_menu_item = dynamic_cast (&items.back()); polarity_menu_item->set_active (_route->phase_invert()); - items.push_back (CheckMenuElem (_("Protect against denormals"), mem_fun (*this, &RouteUI::toggle_denormal_protection))); + items.push_back (CheckMenuElem (_("Protect against denormals"), sigc::mem_fun (*this, &RouteUI::toggle_denormal_protection))); denormal_menu_item = dynamic_cast (&items.back()); denormal_menu_item->set_active (_route->denormal_protection()); if (!Profile->get_sae()) { items.push_back (SeparatorElem()); - items.push_back (MenuElem (_("Remote Control ID..."), mem_fun (*this, &RouteUI::open_remote_control_id_dialog))); + items.push_back (MenuElem (_("Remote Control ID..."), sigc::mem_fun (*this, &RouteUI::open_remote_control_id_dialog))); } items.push_back (SeparatorElem()); - items.push_back (MenuElem (_("Remove"), mem_fun(*this, &RouteUI::remove_this_route))); + items.push_back (MenuElem (_("Remove"), sigc::mem_fun(*this, &RouteUI::remove_this_route))); } gint @@ -1504,7 +1489,7 @@ MixerStrip::set_embedded (bool yn) void MixerStrip::map_frozen () { - ENSURE_GUI_THREAD (mem_fun(*this, &MixerStrip::map_frozen)); + ENSURE_GUI_THREAD (*this, &MixerStrip::map_frozen) boost::shared_ptr at = audio_track(); @@ -1526,7 +1511,7 @@ MixerStrip::map_frozen () void MixerStrip::hide_redirect_editors () { - _route->foreach_processor (mem_fun (*this, &MixerStrip::hide_processor_editor)); + _route->foreach_processor (sigc::mem_fun (*this, &MixerStrip::hide_processor_editor)); } void @@ -1609,10 +1594,11 @@ MixerStrip::engine_running () { } +/** Called when the metering point has changed */ void MixerStrip::meter_changed (void *src) { - ENSURE_GUI_THREAD (bind (mem_fun(*this, &MixerStrip::meter_changed), src)); + ENSURE_GUI_THREAD (*this, &MixerStrip::meter_changed, src) switch (_route->meter_point()) { case MeterInput: @@ -1635,7 +1621,6 @@ MixerStrip::meter_changed (void *src) gpm.setup_meters (); // reset peak when meter point changes gpm.reset_peak_display(); - set_width_enum (_width, this); } void @@ -1698,7 +1683,7 @@ MixerStrip::show_send (boost::shared_ptr send) _current_delivery = send; send->set_metering (true); - send_gone_connection = _current_delivery->GoingAway.connect (mem_fun (*this, &MixerStrip::revert_to_default_display)); + _current_delivery->DropReferences.connect (send_gone_connection, boost::bind (&MixerStrip::revert_to_default_display, this), gui_context()); gain_meter().set_controls (_route, send->meter(), send->amp()); gain_meter().setup_meters ();