+ for (RouteList::iterator x = routes.begin(); x != routes.end(); ++x) {
+ boost::shared_ptr<Route> route = (*x);
+
+ if (route->is_auditioner()) {
+ continue;
+ }
+
+ if (route->is_monitor()) {
+
+ if (!_monitor_section) {
+ _monitor_section = new MonitorSection (_session);
+
+ XMLNode* mnode = ARDOUR_UI::instance()->tearoff_settings (X_("monitor-section"));
+ if (mnode) {
+ _monitor_section->tearoff().set_state (*mnode);
+ }
+ }
+
+ out_packer.pack_end (_monitor_section->tearoff(), false, false);
+ _monitor_section->set_session (_session);
+ _monitor_section->tearoff().show_all ();
+
+ route->DropReferences.connect (*this, invalidator(*this), boost::bind (&Mixer_UI::monitor_section_going_away, this), gui_context());
+
+ /* no regular strip shown for control out */
+
+ continue;
+ }
+
+ strip = new MixerStrip (*this, _session, route);
+ strips.push_back (strip);
+
+ ARDOUR_UI::config()->get_default_narrow_ms() ? _strip_width = Narrow : _strip_width = Wide;
+
+ if (strip->width_owner() != strip) {
+ strip->set_width_enum (_strip_width, this);
+ }
+
+ show_strip (strip);
+
+ TreeModel::Row row = *(track_model->insert(insert_iter));
+ row[track_columns.text] = route->name();
+ row[track_columns.visible] = strip->route()->is_master() ? true : strip->marked_for_display();
+ row[track_columns.route] = route;
+ row[track_columns.strip] = strip;
+
+ if (!from_scratch) {
+ _selection.add (strip);
+ }
+
+ route->PropertyChanged.connect (*this, invalidator (*this), boost::bind (&Mixer_UI::strip_property_changed, this, _1, strip), gui_context());
+
+ strip->WidthChanged.connect (sigc::mem_fun(*this, &Mixer_UI::strip_width_changed));
+ strip->signal_button_release_event().connect (sigc::bind (sigc::mem_fun(*this, &Mixer_UI::strip_button_release_event), strip));