mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-08 07:45:00 +01:00
Merged with trunk R1729.
git-svn-id: svn://localhost/ardour2/branches/midi@1730 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
bed7bacdd1
commit
a9f5e379d2
11 changed files with 377 additions and 545 deletions
|
|
@ -1435,7 +1435,7 @@ class Editor : public PublicEditor
|
||||||
void drag_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event);
|
void drag_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event);
|
||||||
void end_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event);
|
void end_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event);
|
||||||
|
|
||||||
bool select_all_within (nframes_t start, nframes_t end, gdouble topy, gdouble boty, Selection::Operation op);
|
bool select_all_within (nframes_t start, nframes_t end, gdouble topy, gdouble boty, const TrackViewList&, Selection::Operation op);
|
||||||
|
|
||||||
ArdourCanvas::SimpleRect *rubberband_rect;
|
ArdourCanvas::SimpleRect *rubberband_rect;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -594,7 +594,7 @@ Editor::marker_menu_select_all_selectables_using_range ()
|
||||||
bool is_start;
|
bool is_start;
|
||||||
|
|
||||||
if (((l = find_location_from_marker (marker, is_start)) != 0) && (l->end() > l->start())) {
|
if (((l = find_location_from_marker (marker, is_start)) != 0) && (l->end() > l->start())) {
|
||||||
select_all_within (l->start(), l->end() - 1, 0, DBL_MAX, Selection::Set);
|
select_all_within (l->start(), l->end() - 1, 0, DBL_MAX, track_views, Selection::Set);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4524,7 +4524,7 @@ Editor::end_range_markerbar_op (ArdourCanvas::Item* item, GdkEvent* event)
|
||||||
switch (mouse_mode) {
|
switch (mouse_mode) {
|
||||||
case MouseObject:
|
case MouseObject:
|
||||||
/* find the two markers on either side and then make the selection from it */
|
/* find the two markers on either side and then make the selection from it */
|
||||||
select_all_within (start, end, 0.0f, FLT_MAX, Selection::Set);
|
select_all_within (start, end, 0.0f, FLT_MAX, track_views, Selection::Set);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case MouseRange:
|
case MouseRange:
|
||||||
|
|
@ -4727,9 +4727,9 @@ Editor::end_rubberband_select (ArdourCanvas::Item* item, GdkEvent* event)
|
||||||
begin_reversible_command (_("rubberband selection"));
|
begin_reversible_command (_("rubberband selection"));
|
||||||
|
|
||||||
if (drag_info.grab_frame < drag_info.last_pointer_frame) {
|
if (drag_info.grab_frame < drag_info.last_pointer_frame) {
|
||||||
commit = select_all_within (drag_info.grab_frame, drag_info.last_pointer_frame, y1, y2, op);
|
commit = select_all_within (drag_info.grab_frame, drag_info.last_pointer_frame, y1, y2, track_views, op);
|
||||||
} else {
|
} else {
|
||||||
commit = select_all_within (drag_info.last_pointer_frame, drag_info.grab_frame, y1, y2, op);
|
commit = select_all_within (drag_info.last_pointer_frame, drag_info.grab_frame, y1, y2, track_views, op);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (commit) {
|
if (commit) {
|
||||||
|
|
|
||||||
|
|
@ -245,7 +245,7 @@ Editor::set_selected_control_point_from_click (Selection::Operation op, bool no_
|
||||||
y1 = clicked_control_point->get_x() - 10;
|
y1 = clicked_control_point->get_x() - 10;
|
||||||
y2 = clicked_control_point->get_y() + 10;
|
y2 = clicked_control_point->get_y() + 10;
|
||||||
|
|
||||||
return select_all_within (x1, x2, y1, y2, op);
|
return select_all_within (x1, x2, y1, y2, selection->tracks, op);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
@ -770,13 +770,13 @@ Editor::invert_selection ()
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
Editor::select_all_within (nframes_t start, nframes_t end, double top, double bot, Selection::Operation op)
|
Editor::select_all_within (nframes_t start, nframes_t end, double top, double bot, const TrackViewList& tracklist, Selection::Operation op)
|
||||||
{
|
{
|
||||||
list<Selectable*> touched;
|
list<Selectable*> touched;
|
||||||
list<Selectable*>::size_type n = 0;
|
list<Selectable*>::size_type n = 0;
|
||||||
TrackViewList touched_tracks;
|
TrackViewList touched_tracks;
|
||||||
|
|
||||||
for (TrackViewList::iterator iter = selection->tracks.begin(); iter != selection->tracks.end(); ++iter) {
|
for (TrackViewList::const_iterator iter = tracklist.begin(); iter != tracklist.end(); ++iter) {
|
||||||
if ((*iter)->hidden()) {
|
if ((*iter)->hidden()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1614,6 +1614,7 @@ class Session : public PBD::StatefulDestructible
|
||||||
|
|
||||||
void jack_timebase_callback (jack_transport_state_t, nframes_t, jack_position_t*, int);
|
void jack_timebase_callback (jack_transport_state_t, nframes_t, jack_position_t*, int);
|
||||||
int jack_sync_callback (jack_transport_state_t, jack_position_t*);
|
int jack_sync_callback (jack_transport_state_t, jack_position_t*);
|
||||||
|
void reset_jack_connection (jack_client_t* jack);
|
||||||
void record_enable_change_all (bool yn);
|
void record_enable_change_all (bool yn);
|
||||||
|
|
||||||
XMLNode& state(bool);
|
XMLNode& state(bool);
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,7 @@ class JACK_Slave : public Slave
|
||||||
bool ok() const;
|
bool ok() const;
|
||||||
nframes_t resolution() const { return 1; }
|
nframes_t resolution() const { return 1; }
|
||||||
bool requires_seekahead () const { return false; }
|
bool requires_seekahead () const { return false; }
|
||||||
|
void reset_client (jack_client_t* jack);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
jack_client_t* jack;
|
jack_client_t* jack;
|
||||||
|
|
|
||||||
|
|
@ -612,7 +612,16 @@ AudioDiskstream::process (nframes_t transport_frame, nframes_t nframes, nframes_
|
||||||
|
|
||||||
if (nominally_recording || rec_nframes) {
|
if (nominally_recording || rec_nframes) {
|
||||||
|
|
||||||
for (n = 0, chan = c->begin(); chan != c->end(); ++chan, ++n) {
|
uint32_t limit = _io->n_inputs ().get(DataType::AUDIO);
|
||||||
|
|
||||||
|
/* one or more ports could already have been removed from _io, but our
|
||||||
|
channel setup hasn't yet been updated. prevent us from trying to
|
||||||
|
use channels that correspond to missing ports. note that the
|
||||||
|
process callback (from which this is called) is always atomic
|
||||||
|
with respect to port removal/addition.
|
||||||
|
*/
|
||||||
|
|
||||||
|
for (n = 0, chan = c->begin(); chan != c->end() && n < limit; ++chan, ++n) {
|
||||||
|
|
||||||
ChannelInfo* chaninfo (*chan);
|
ChannelInfo* chaninfo (*chan);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1137,6 +1137,7 @@ AudioEngine::reconnect_to_jack ()
|
||||||
|
|
||||||
|
|
||||||
if (session) {
|
if (session) {
|
||||||
|
session->reset_jack_connection (_jack);
|
||||||
nframes_t blocksize = jack_get_buffer_size (_jack);
|
nframes_t blocksize = jack_get_buffer_size (_jack);
|
||||||
session->set_block_size (blocksize);
|
session->set_block_size (blocksize);
|
||||||
session->set_frame_rate (jack_get_sample_rate (_jack));
|
session->set_frame_rate (jack_get_sample_rate (_jack));
|
||||||
|
|
|
||||||
|
|
@ -44,6 +44,12 @@ JACK_Slave::~JACK_Slave ()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
JACK_Slave::reset_client (jack_client_t* j)
|
||||||
|
{
|
||||||
|
jack = j;
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
JACK_Slave::locked() const
|
JACK_Slave::locked() const
|
||||||
{
|
{
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1267,3 +1267,13 @@ Session::allow_auto_play (bool yn)
|
||||||
{
|
{
|
||||||
auto_play_legal = yn;
|
auto_play_legal = yn;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
Session::reset_jack_connection (jack_client_t* jack)
|
||||||
|
{
|
||||||
|
JACK_Slave* js;
|
||||||
|
|
||||||
|
if (_slave && ((js = dynamic_cast<JACK_Slave*> (_slave)) != 0)) {
|
||||||
|
js->reset_client (jack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue