patches from Stephane Letz for JACK, and Nimal Ratnayake for play range and play...
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 2 Jan 2007 21:25:37 +0000 (21:25 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 2 Jan 2007 21:25:37 +0000 (21:25 +0000)
git-svn-id: svn://localhost/ardour2/trunk@1260 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/editor.h
gtk2_ardour/editor_markers.cc
libs/ardour/audioengine.cc
libs/ardour/session_transport.cc

index dd35d36c0561c48ba5fbe72852f791be13288d5c..e64ccf461daacef8cc0cdfca8d759222b845ad6e 100644 (file)
@@ -1205,6 +1205,7 @@ class Editor : public PublicEditor
        void marker_menu_select_all_selectables_using_range ();
        void marker_menu_separate_regions_using_location ();
        void marker_menu_play_from ();
+       void marker_menu_play_range ();
        void marker_menu_set_playhead ();
        void marker_menu_set_from_playhead ();
        void marker_menu_set_from_selection ();
index 6da479bafef17cfba34a9766ed3404bba3d2167f..29b57e449ae92e27bdb62f94ec5a9bf1fe48335b 100644 (file)
@@ -481,6 +481,7 @@ Editor::build_range_marker_menu ()
 
        items.push_back (MenuElem (_("Locate to Range Mark"), mem_fun(*this, &Editor::marker_menu_set_playhead)));
        items.push_back (MenuElem (_("Play from Range Mark"), mem_fun(*this, &Editor::marker_menu_play_from)));
+       items.push_back (MenuElem (_("Play Range"), mem_fun(*this, &Editor::marker_menu_play_range)));
        items.push_back (MenuElem (_("Loop Range"), mem_fun(*this, &Editor::marker_menu_loop_range)));
        items.push_back (MenuElem (_("Set Range Mark from Playhead"), mem_fun(*this, &Editor::marker_menu_set_from_playhead)));
        items.push_back (MenuElem (_("Set Range from Range Selection"), mem_fun(*this, &Editor::marker_menu_set_from_selection)));
@@ -726,6 +727,32 @@ Editor::marker_menu_set_from_selection ()
        }
 }
 
+
+void
+Editor::marker_menu_play_range ()
+{
+       Marker* marker;
+
+       if ((marker = reinterpret_cast<Marker *> (marker_menu_item->get_data ("marker"))) == 0) {
+               fatal << _("programming error: marker canvas item has no marker object pointer!") << endmsg;
+               /*NOTREACHED*/
+       }
+
+       Location* l;
+       bool is_start;
+       
+       if ((l = find_location_from_marker (marker, is_start)) != 0) {
+
+               if (l->is_mark()) {
+                       session->request_locate (l->start(), true);
+               }
+               else {
+                       session->request_bounded_roll (l->start(), l->end());
+                       
+               }
+       }
+}
+
 void
 Editor::marker_menu_loop_range ()
 {
index b68235171f82794bce1552dc82768a69c32e0304..39c5ddcdabc3c24687d11bcbfe68928b30b6cb0f 100644 (file)
@@ -167,7 +167,6 @@ AudioEngine::stop (bool forever)
 }
 
 
-       
 bool
 AudioEngine::get_sync_offset (nframes_t& offset) const
 {
@@ -736,8 +735,6 @@ AudioEngine::halted (void *arg)
        AudioEngine* ae = static_cast<AudioEngine *> (arg);
 
        ae->_running = false;
-       ae->_jack = 0;
-
        ae->_buffer_size = 0;
        ae->_frame_rate = 0;
 
@@ -1045,9 +1042,7 @@ AudioEngine::disconnect_from_jack ()
                return 0;
        }
 
-       if (jack_client_close (_jack)) {
-               error << _("cannot shutdown connection to JACK") << endmsg;
-       }
+       jack_client_close (_jack);
 
        _buffer_size = 0;
        _frame_rate = 0;
index 6bbfaf6812c2453d68b31ac7607ee8041ef812b7..9452cb3558e0b798c6d031c34e4a345219eebea2 100644 (file)
@@ -1150,7 +1150,7 @@ void
 Session::request_bounded_roll (nframes_t start, nframes_t end)
 {
        request_stop ();
-       Event *ev = new Event (Event::StopOnce, Event::Replace, Event::Immediate, end, 0.0);
+       Event *ev = new Event (Event::StopOnce, Event::Replace, end, Event::Immediate, 0.0);
        queue_event (ev);
        request_locate (start, true);
 }