just one timeout callback for step editing, not one per track
authorPaul Davis <paul@linuxaudiosystems.com>
Sat, 5 Sep 2009 14:11:48 +0000 (14:11 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Sat, 5 Sep 2009 14:11:48 +0000 (14:11 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@5635 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor.cc
gtk2_ardour/editor.h
gtk2_ardour/editor_mouse.cc
gtk2_ardour/midi_region_view.cc
gtk2_ardour/midi_time_axis.cc
gtk2_ardour/midi_time_axis.h

index 1203dc83bdd83a28c874df3bed3b9686ba016eca..bb5ba16625a4443730f27080e09b60bb5bdd4d5b 100644 (file)
@@ -5087,3 +5087,27 @@ Editor::hide_region_from_region_list ()
        _regions->selection_mapover (mem_fun (*this, &Editor::hide_a_region));
 }
 
+void
+Editor::start_step_editing ()
+{
+       step_edit_connection = Glib::signal_timeout().connect (mem_fun (*this, &Editor::check_step_edit), 20);
+}
+
+void
+Editor::stop_step_editing ()
+{
+       step_edit_connection.disconnect ();
+}
+
+bool
+Editor::check_step_edit ()
+{
+       for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
+               MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*> (*i);
+               if (mtv) {
+                       mtv->check_step_edit ();
+               }
+       }
+
+       return true; // do it again, till we stop
+}
index 18285b9fa04fee1247e7bc4a98734620f69f2cbc..ad7c54752bbfdbf18a4605fa19e2f581eb399685 100644 (file)
@@ -2034,6 +2034,11 @@ public:
        EditorGroupTabs* _group_tabs;
        void fit_route_group (ARDOUR::RouteGroup *);
 
+       void start_step_editing ();
+       void stop_step_editing ();
+       bool check_step_edit ();
+       sigc::connection step_edit_connection;
+
        friend class Drag;
        friend class RegionDrag;
        friend class RegionMoveDrag;
index cffc4afd1b3996a00d0244dafd7556560247e702..164f09dfcf347c1ef522a06682b4022ff82daa9f 100644 (file)
@@ -2565,10 +2565,12 @@ Editor::set_internal_edit (bool yn)
                                mtv->start_step_editing ();
                        }
                }
+               start_step_editing ();
 
        } else {
 
                mouse_select_button.set_image (*(manage (new Image (::get_xpm("tool_range.xpm")))));
+               stop_step_editing ();
 
                for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
                        MidiTimeAxisView* mtv = dynamic_cast<MidiTimeAxisView*> (*i);
index 9ad82707d71ca8b156150ba234dd62b1adfb0e95..5e494605b86fba2e576e41bd0ce61c2f34b43710 100644 (file)
@@ -2252,7 +2252,6 @@ MidiRegionView::add_note (uint8_t channel, uint8_t number, uint8_t velocity,
        nframes64_t region_end = _region->position() + _region->length() - 1;
 
        if (end_frame > region_end) {
-               cerr << "Resize region!\n";
                _region->set_length (end_frame, this);
        } else {
                redisplay_model ();
index 3b7ec82807116fce6152265035c2811033ce676a..1bc8c7a45338d3b395109bc2c4f1d3c4d1515e9d 100644 (file)
@@ -562,7 +562,6 @@ MidiTimeAxisView::route_active_changed ()
 void
 MidiTimeAxisView::start_step_editing ()
 {
-       step_edit_connection = Glib::signal_timeout().connect (mem_fun (*this, &MidiTimeAxisView::check_step_edit), 20);
        step_edit_insert_position = _editor.get_preferred_edit_position ();
        step_edit_beat_pos = 0;
        step_edit_region = playlist()->top_region_at (step_edit_insert_position);
@@ -580,11 +579,10 @@ MidiTimeAxisView::start_step_editing ()
 void
 MidiTimeAxisView::stop_step_editing ()
 {
-       step_edit_connection.disconnect ();
        midi_track()->set_step_editing (false);
 }
 
-bool
+void
 MidiTimeAxisView::check_step_edit ()
 {
        MidiRingBuffer<nframes_t>& incoming (midi_track()->step_edit_ring_buffer());
@@ -641,8 +639,6 @@ MidiTimeAxisView::check_step_edit ()
                }
                
        }
-
-       return true; /* keep checking */
 }
 
 boost::shared_ptr<Region>
index 6635c3de41060137dda0f2e9d4b5961a4c5aeddc..33a5f779bd7fb4e7c2e562a13a6fb06072bfd8f9 100644 (file)
@@ -90,6 +90,8 @@ class MidiTimeAxisView : public RouteTimeAxisView
        
        void start_step_editing ();
        void stop_step_editing ();
+       void check_step_edit ();
+
 
   private:
        sigc::signal<void, std::string, std::string>  _midi_patch_settings_changed;
@@ -127,14 +129,12 @@ class MidiTimeAxisView : public RouteTimeAxisView
        Gtk::ComboBoxText            _custom_device_mode_selector;
 
        Gtk::CheckMenuItem*          _step_edit_item;
-       sigc::connection              step_edit_connection;
 
        nframes64_t step_edit_insert_position;
        Evoral::MusicalTime step_edit_beat_pos;
        boost::shared_ptr<ARDOUR::Region> step_edit_region;
        MidiRegionView* step_edit_region_view;
 
-       bool check_step_edit ();
 };
 
 #endif /* __ardour_midi_time_axis_h__ */