midi scroomer updates streamview during drags.
authornick_m <mainsbridge@gmail.com>
Thu, 24 Nov 2016 13:50:29 +0000 (00:50 +1100)
committernick_m <mainsbridge@gmail.com>
Thu, 24 Nov 2016 13:50:29 +0000 (00:50 +1100)
gtk2_ardour/midi_time_axis.cc
gtk2_ardour/midi_time_axis.h

index 4e4b54197730830c375a2d8dbcec15df2d11a362..0ff084e4f1c687197b11471c53434e1705ab4e29 100644 (file)
@@ -163,8 +163,6 @@ MidiTimeAxisView::set_route (boost::shared_ptr<Route> rt)
                                               true);
        }
 
-       midi_view()->NoteRangeChanged.connect (
-               sigc::mem_fun (*this, &MidiTimeAxisView::note_range_changed));
        _view->ContentsHeightChanged.connect (
                sigc::mem_fun (*this, &MidiTimeAxisView::contents_height_changed));
 
@@ -207,11 +205,12 @@ MidiTimeAxisView::set_route (boost::shared_ptr<Route> rt)
                _piano_roll_header->ToggleNoteSelection.connect (
                        sigc::mem_fun (*this, &MidiTimeAxisView::toggle_note_selection));
 
-               /* Suspend updates of the StreamView during scroomer drags to speed things up */
+               /* Update StreamView during scroomer drags.*/
+
                _range_scroomer->DragStarting.connect (
-                       sigc::mem_fun (*midi_view(), &MidiStreamView::suspend_updates));
+                       sigc::mem_fun (*this, &MidiTimeAxisView::start_scroomer_update));
                _range_scroomer->DragFinishing.connect (
-                       sigc::mem_fun (*midi_view(), &MidiStreamView::resume_updates));
+                       sigc::mem_fun (*this, &MidiTimeAxisView::stop_scroomer_update));
 
                /* Put the scroomer and the keyboard in a VBox with a padding
                   label so that they can be reduced in height for stacked-view
@@ -431,6 +430,17 @@ MidiTimeAxisView::drop_instrument_ref ()
 {
        midnam_connection.drop_connections ();
 }
+void
+MidiTimeAxisView::start_scroomer_update ()
+{
+       _note_range_changed_connection = midi_view()->NoteRangeChanged.connect (
+               sigc::mem_fun (*this, &MidiTimeAxisView::note_range_changed));
+}
+void
+MidiTimeAxisView::stop_scroomer_update ()
+{
+       _note_range_changed_connection.disconnect();
+}
 
 void
 MidiTimeAxisView::update_patch_selector ()
index fe8a464875a91b33e55d0581b0bf3cce0bd79f5d..9f3ef78e5bac86a4b3780ddb84f196df8d6acd04 100644 (file)
@@ -123,6 +123,10 @@ private:
        void drop_instrument_ref ();
        PBD::ScopedConnectionList midnam_connection;
 
+       void start_scroomer_update ();
+       void stop_scroomer_update ();
+       sigc::connection _note_range_changed_connection;
+
        void model_changed(const std::string& model);
        void custom_device_mode_changed(const std::string& mode);