summaryrefslogtreecommitdiff
path: root/gtk2_ardour
diff options
context:
space:
mode:
Diffstat (limited to 'gtk2_ardour')
-rw-r--r--gtk2_ardour/SConscript1
-rw-r--r--gtk2_ardour/ardour_ui.cc2
-rw-r--r--gtk2_ardour/audio_streamview.cc29
-rw-r--r--gtk2_ardour/audio_streamview.h6
-rw-r--r--gtk2_ardour/audio_time_axis.cc2
-rw-r--r--gtk2_ardour/editor.cc10
-rw-r--r--gtk2_ardour/editor.h10
-rw-r--r--gtk2_ardour/editor_audio_import.cc5
-rw-r--r--gtk2_ardour/editor_canvas.cc8
-rw-r--r--gtk2_ardour/editor_mouse.cc114
-rw-r--r--gtk2_ardour/editor_ops.cc30
-rw-r--r--gtk2_ardour/editor_region_list.cc26
-rw-r--r--gtk2_ardour/editor_tempodisplay.cc5
-rw-r--r--gtk2_ardour/midi_region_view.cc4
-rw-r--r--gtk2_ardour/midi_streamview.cc149
-rw-r--r--gtk2_ardour/midi_streamview.h2
-rw-r--r--gtk2_ardour/midi_time_axis.cc85
-rw-r--r--gtk2_ardour/midi_time_axis.h4
-rw-r--r--gtk2_ardour/route_ui.cc15
-rw-r--r--gtk2_ardour/route_ui.h1
-rw-r--r--gtk2_ardour/streamview.cc1
-rw-r--r--gtk2_ardour/streamview.h4
22 files changed, 221 insertions, 292 deletions
diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript
index 8fb9a0717b..9035666bbb 100644
--- a/gtk2_ardour/SConscript
+++ b/gtk2_ardour/SConscript
@@ -168,6 +168,7 @@ region_gain_line.cc
region_selection.cc
region_view.cc
audio_region_view.cc
+midi_region_view.cc
tape_region_view.cc
route_params_ui.cc
route_redirect_selection.cc
diff --git a/gtk2_ardour/ardour_ui.cc b/gtk2_ardour/ardour_ui.cc
index 0e94259194..34718dfb1c 100644
--- a/gtk2_ardour/ardour_ui.cc
+++ b/gtk2_ardour/ardour_ui.cc
@@ -248,7 +248,7 @@ ARDOUR_UI::set_engine (AudioEngine& e)
if (AudioSource::start_peak_thread ()) {
throw failed_constructor();
}
-
+
/* start the time-of-day-clock */
update_wall_clock ();
diff --git a/gtk2_ardour/audio_streamview.cc b/gtk2_ardour/audio_streamview.cc
index 2e82d48ff3..523395c503 100644
--- a/gtk2_ardour/audio_streamview.cc
+++ b/gtk2_ardour/audio_streamview.cc
@@ -56,7 +56,7 @@ AudioStreamView::AudioStreamView (AudioTimeAxisView& tv)
{
crossfades_visible = true;
- if (tv.is_audio_track())
+ if (tv.is_track())
stream_base_color = color_map[cAudioTrackBase];
else
stream_base_color = color_map[cAudioBusBase];
@@ -67,7 +67,6 @@ AudioStreamView::AudioStreamView (AudioTimeAxisView& tv)
_amplitude_above_axis = 1.0;
use_rec_regions = tv.editor.show_waveforms_recording ();
- last_rec_peak_frame = 0;
}
AudioStreamView::~AudioStreamView ()
@@ -393,10 +392,10 @@ AudioStreamView::setup_rec_box ()
AudioRegion::SourceList sources;
- for (list<sigc::connection>::iterator prc = peak_ready_connections.begin(); prc != peak_ready_connections.end(); ++prc) {
+ for (list<sigc::connection>::iterator prc = rec_data_ready_connections.begin(); prc != rec_data_ready_connections.end(); ++prc) {
(*prc).disconnect();
}
- peak_ready_connections.clear();
+ rec_data_ready_connections.clear();
// FIXME
AudioDiskstream* ads = dynamic_cast<AudioDiskstream*>(_trackview.get_diskstream());
@@ -406,7 +405,7 @@ AudioStreamView::setup_rec_box ()
AudioSource *src = (AudioSource *) ads->write_source (n);
if (src) {
sources.push_back (src);
- peak_ready_connections.push_back (src->PeakRangeReady.connect (bind (mem_fun (*this, &AudioStreamView::rec_peak_range_ready), src)));
+ rec_data_ready_connections.push_back (src->PeakRangeReady.connect (bind (mem_fun (*this, &AudioStreamView::rec_peak_range_ready), src)));
}
}
@@ -492,14 +491,14 @@ AudioStreamView::setup_rec_box ()
/* disconnect rapid update */
screen_update_connection.disconnect();
- for (list<sigc::connection>::iterator prc = peak_ready_connections.begin(); prc != peak_ready_connections.end(); ++prc) {
+ for (list<sigc::connection>::iterator prc = rec_data_ready_connections.begin(); prc != rec_data_ready_connections.end(); ++prc) {
(*prc).disconnect();
}
- peak_ready_connections.clear();
+ rec_data_ready_connections.clear();
rec_updating = false;
rec_active = false;
- last_rec_peak_frame = 0;
+ last_rec_data_frame = 0;
/* remove temp regions */
for (list<Region*>::iterator iter=rec_regions.begin(); iter != rec_regions.end(); )
@@ -547,15 +546,15 @@ AudioStreamView::rec_peak_range_ready (jack_nframes_t start, jack_nframes_t cnt,
ENSURE_GUI_THREAD(bind (mem_fun (*this, &AudioStreamView::rec_peak_range_ready), start, cnt, src));
- if (rec_peak_ready_map.size() == 0 || start+cnt > last_rec_peak_frame) {
- last_rec_peak_frame = start + cnt;
+ if (rec_data_ready_map.size() == 0 || start+cnt > last_rec_data_frame) {
+ last_rec_data_frame = start + cnt;
}
- rec_peak_ready_map[src] = true;
+ rec_data_ready_map[src] = true;
- if (rec_peak_ready_map.size() == _trackview.get_diskstream()->n_channels().get(DataType::AUDIO)) {
+ if (rec_data_ready_map.size() == _trackview.get_diskstream()->n_channels().get(DataType::AUDIO)) {
this->update_rec_regions ();
- rec_peak_ready_map.clear();
+ rec_data_ready_map.clear();
}
}
@@ -587,9 +586,9 @@ AudioStreamView::update_rec_regions ()
if (region == rec_regions.back() && rec_active) {
- if (last_rec_peak_frame > region->start()) {
+ if (last_rec_data_frame > region->start()) {
- jack_nframes_t nlen = last_rec_peak_frame - region->start();
+ jack_nframes_t nlen = last_rec_data_frame - region->start();
if (nlen != region->length()) {
diff --git a/gtk2_ardour/audio_streamview.h b/gtk2_ardour/audio_streamview.h
index 05ce8125f6..979240bd50 100644
--- a/gtk2_ardour/audio_streamview.h
+++ b/gtk2_ardour/audio_streamview.h
@@ -94,17 +94,11 @@ class AudioStreamView : public StreamView
void color_handler (ColorID id, uint32_t val);
-
double _amplitude_above_axis;
typedef list<CrossfadeView*> CrossfadeViewList;
CrossfadeViewList crossfade_views;
bool crossfades_visible;
-
- list<sigc::connection> peak_ready_connections;
- jack_nframes_t last_rec_peak_frame;
- map<ARDOUR::Source*, bool> rec_peak_ready_map;
-
};
#endif /* __ardour_audio_streamview_h__ */
diff --git a/gtk2_ardour/audio_time_axis.cc b/gtk2_ardour/audio_time_axis.cc
index 893bcc21c0..7f6bc50222 100644
--- a/gtk2_ardour/audio_time_axis.cc
+++ b/gtk2_ardour/audio_time_axis.cc
@@ -117,7 +117,7 @@ AudioTimeAxisView::AudioTimeAxisView (PublicEditor& ed, Session& sess, boost::sh
_route->panner().Changed.connect (mem_fun(*this, &AudioTimeAxisView::update_pans));
- if (is_audio_track()) {
+ if (is_track()) {
controls_ebox.set_name ("AudioTrackControlsBaseUnselected");
controls_base_selected_name = "AudioTrackControlsBaseSelected";
diff --git a/gtk2_ardour/editor.cc b/gtk2_ardour/editor.cc
index 513251085c..b991982855 100644
--- a/gtk2_ardour/editor.cc
+++ b/gtk2_ardour/editor.cc
@@ -1178,8 +1178,8 @@ Editor::connect_to_session (Session *t)
session_connections.push_back (session->TransportStateChange.connect (mem_fun(*this, &Editor::map_transport_state)));
session_connections.push_back (session->PositionChanged.connect (mem_fun(*this, &Editor::map_position_change)));
session_connections.push_back (session->RouteAdded.connect (mem_fun(*this, &Editor::handle_new_route)));
- session_connections.push_back (session->AudioRegionAdded.connect (mem_fun(*this, &Editor::handle_new_audio_region)));
- session_connections.push_back (session->AudioRegionRemoved.connect (mem_fun(*this, &Editor::handle_audio_region_removed)));
+ session_connections.push_back (session->RegionAdded.connect (mem_fun(*this, &Editor::handle_new_region)));
+ session_connections.push_back (session->RegionRemoved.connect (mem_fun(*this, &Editor::handle_region_removed)));
session_connections.push_back (session->DurationChanged.connect (mem_fun(*this, &Editor::handle_new_duration)));
session_connections.push_back (session->edit_group_added.connect (mem_fun(*this, &Editor::add_edit_group)));
session_connections.push_back (session->edit_group_removed.connect (mem_fun(*this, &Editor::edit_groups_changed)));
@@ -1327,10 +1327,10 @@ Editor::connect_to_session (Session *t)
for (i = rows.begin(); i != rows.end(); ++i) {
TimeAxisView *tv = (*i)[route_display_columns.tv];
- AudioTimeAxisView *atv;
+ RouteTimeAxisView *rtv;
- if ((atv = dynamic_cast<AudioTimeAxisView*>(tv)) != 0) {
- if (atv->route()->master()) {
+ if ((rtv = dynamic_cast<RouteTimeAxisView*>(tv)) != 0) {
+ if (rtv->route()->master()) {
route_list_display.get_selection()->unselect (i);
}
}
diff --git a/gtk2_ardour/editor.h b/gtk2_ardour/editor.h
index b3735cf42a..3f2a278f09 100644
--- a/gtk2_ardour/editor.h
+++ b/gtk2_ardour/editor.h
@@ -832,14 +832,14 @@ class Editor : public PublicEditor
int ensure_cursor (jack_nframes_t* pos);
- void handle_new_audio_region (ARDOUR::AudioRegion *);
- void handle_audio_region_removed (ARDOUR::AudioRegion *);
- void add_audio_region_to_region_display (ARDOUR::AudioRegion *);
+ void handle_new_region (ARDOUR::Region *);
+ void handle_region_removed (ARDOUR::Region *);
+ void add_region_to_region_display (ARDOUR::Region *);
void region_hidden (ARDOUR::Region*);
void redisplay_regions ();
- void insert_into_tmp_audio_regionlist(ARDOUR::AudioRegion *);
+ void insert_into_tmp_regionlist(ARDOUR::Region *);
- list<ARDOUR::AudioRegion *> tmp_audio_region_list;
+ list<ARDOUR::Region *> tmp_region_list;
void cut_copy (Editing::CutCopyOp);
void cut_copy_points (Editing::CutCopyOp);
diff --git a/gtk2_ardour/editor_audio_import.cc b/gtk2_ardour/editor_audio_import.cc
index 754706ad9f..de256ce0e6 100644
--- a/gtk2_ardour/editor_audio_import.cc
+++ b/gtk2_ardour/editor_audio_import.cc
@@ -176,8 +176,9 @@ Editor::import_sndfile (Glib::ustring path, ImportMode mode, AudioTrack* track,
/* import thread finished - see if we should build a new track */
if (!import_status.new_regions.empty()) {
- AudioRegion& region (*import_status.new_regions.front());
- finish_bringing_in_audio (region, region.n_channels(), region.n_channels(), track, pos, mode);
+ AudioRegion* const aregion = dynamic_cast<AudioRegion*>(import_status.new_regions.front());
+ assert(aregion);
+ finish_bringing_in_audio (*aregion, aregion->n_channels(), aregion->n_channels(), track, pos, mode);
}
track_canvas.get_window()->set_cursor (*current_canvas_cursor);
diff --git a/gtk2_ardour/editor_canvas.cc b/gtk2_ardour/editor_canvas.cc
index e8ba2b8a60..2f3aab1eb6 100644
--- a/gtk2_ardour/editor_canvas.cc
+++ b/gtk2_ardour/editor_canvas.cc
@@ -426,7 +426,7 @@ Editor::drop_paths (const RefPtr<Gdk::DragContext>& context,
guint info, guint time)
{
TimeAxisView* tvp;
- AudioTimeAxisView* tv;
+ RouteTimeAxisView* tv;
double cy;
vector<ustring> paths;
string spath;
@@ -462,7 +462,7 @@ Editor::drop_paths (const RefPtr<Gdk::DragContext>& context,
jack_nframes_t pos = 0;
do_embed (paths, false, ImportAsTrack, 0, pos, false);
- } else if ((tv = dynamic_cast<AudioTimeAxisView*>(tvp)) != 0) {
+ } else if ((tv = dynamic_cast<RouteTimeAxisView*>(tvp)) != 0) {
/* check that its an audio track, not a bus */
@@ -486,9 +486,9 @@ Editor::drop_regions (const RefPtr<Gdk::DragContext>& context,
for (uint32_t i = 0; i < sr->cnt; ++i) {
Region* r = reinterpret_cast<Region*> (sr->ptr[i]);
- AudioRegion* ar;
- if ((ar = dynamic_cast<AudioRegion*>(r)) != 0) {
+ AudioRegion* ar = dynamic_cast<AudioRegion*>(r);
+ if (ar) {
insert_region_list_drag (*ar, x, y);
}
}
diff --git a/gtk2_ardour/editor_mouse.cc b/gtk2_ardour/editor_mouse.cc
index a05dcba9e3..f459f24341 100644
--- a/gtk2_ardour/editor_mouse.cc
+++ b/gtk2_ardour/editor_mouse.cc
@@ -2682,7 +2682,7 @@ Editor::start_region_grab (ArdourCanvas::Item* item, GdkEvent* event)
TimeAxisView* tvp = clicked_trackview;
RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
- if (tv && tv->is_audio_track()) {
+ if (tv && tv->is_track()) {
speed = tv->get_diskstream()->speed();
}
@@ -2711,11 +2711,11 @@ Editor::start_region_copy_grab (ArdourCanvas::Item* item, GdkEvent* event)
start_grab(event);
TimeAxisView* tv = &clicked_regionview->get_time_axis_view();
- RouteTimeAxisView* atv = dynamic_cast<RouteTimeAxisView*>(tv);
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(tv);
double speed = 1.0;
- if (atv && atv->is_audio_track()) {
- speed = atv->get_diskstream()->speed();
+ if (rtv && rtv->is_track()) {
+ speed = rtv->get_diskstream()->speed();
}
drag_info.last_trackview = &clicked_regionview->get_time_axis_view();
@@ -2746,7 +2746,7 @@ Editor::start_region_brush_grab (ArdourCanvas::Item* item, GdkEvent* event)
TimeAxisView* tvp = clicked_trackview;
RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
- if (tv && tv->is_audio_track()) {
+ if (tv && tv->is_track()) {
speed = tv->get_diskstream()->speed();
}
@@ -2796,7 +2796,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
rv = (*i);
Playlist* to_playlist = rv->region().playlist();
- RouteTimeAxisView* atv = dynamic_cast<RouteTimeAxisView*>(&rv->get_time_axis_view());
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(&rv->get_time_axis_view());
insert_result = affected_playlists.insert (to_playlist);
if (insert_result.second) {
@@ -2805,7 +2805,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
latest_regionview = 0;
- sigc::connection c = atv->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view));
+ sigc::connection c = rtv->view()->RegionViewAdded.connect (mem_fun(*this, &Editor::collect_new_region_view));
/* create a new region with the same name. */
@@ -2821,7 +2821,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
newregion->set_locked (false);
- to_playlist->add_region (*newregion, (jack_nframes_t) (rv->region().position() * atv->get_diskstream()->speed()));
+ to_playlist->add_region (*newregion, (jack_nframes_t) (rv->region().position() * rtv->get_diskstream()->speed()));
c.disconnect ();
@@ -2847,15 +2847,15 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
/* Which trackview is this ? */
TimeAxisView* tvp = trackview_by_y_position (drag_info.current_pointer_y);
- AudioTimeAxisView* tv = dynamic_cast<AudioTimeAxisView*>(tvp);
+ RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
/* The region motion is only processed if the pointer is over
an audio track.
*/
- if (!tv || !tv->is_audio_track()) {
+ if (!tv || !tv->is_track()) {
/* To make sure we hide the verbose canvas cursor when the mouse is
- not held over and audiotrack.
+ not held over a track.
*/
hide_verbose_canvas_cursor ();
return;
@@ -2883,30 +2883,30 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
for (TrackViewList::iterator i = track_views.begin(); i != track_views.end(); ++i) {
TimeAxisView *tracklist_timeview;
tracklist_timeview = (*i);
- AudioTimeAxisView* atv2 = dynamic_cast<AudioTimeAxisView*>(tracklist_timeview);
+ RouteTimeAxisView* rtv2 = dynamic_cast<RouteTimeAxisView*>(tracklist_timeview);
list<TimeAxisView*> children_list;
/* zeroes are audio tracks. ones are other types. */
- if (!atv2->hidden()) {
+ if (!rtv2->hidden()) {
- if (visible_y_high < atv2->order) {
- visible_y_high = atv2->order;
+ if (visible_y_high < rtv2->order) {
+ visible_y_high = rtv2->order;
}
- if (visible_y_low > atv2->order) {
- visible_y_low = atv2->order;
+ if (visible_y_low > rtv2->order) {
+ visible_y_low = rtv2->order;
}
- if (!atv2->is_audio_track()) {
- tracks = tracks |= (0x01 << atv2->order);
+ if (!rtv2->is_track()) {
+ tracks = tracks |= (0x01 << rtv2->order);
}
- height_list[atv2->order] = (*i)->height;
+ height_list[rtv2->order] = (*i)->height;
children = 1;
- if ((children_list = atv2->get_child_list()).size() > 0) {
+ if ((children_list = rtv2->get_child_list()).size() > 0) {
for (list<TimeAxisView*>::iterator j = children_list.begin(); j != children_list.end(); ++j) {
- tracks = tracks |= (0x01 << (atv2->order + children));
- height_list[atv2->order + children] = (*j)->height;
+ tracks = tracks |= (0x01 << (rtv2->order + children));
+ height_list[rtv2->order + children] = (*j)->height;
numtracks++;
children++;
}
@@ -2941,27 +2941,27 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
rv2->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2);
rv2->get_canvas_group()->i2w (ix1, iy1);
TimeAxisView* tvp2 = trackview_by_y_position (iy1);
- RouteTimeAxisView* atv2 = dynamic_cast<RouteTimeAxisView*>(tvp2);
+ RouteTimeAxisView* rtv2 = dynamic_cast<RouteTimeAxisView*>(tvp2);
- if (atv2->order != original_pointer_order) {
+ if (rtv2->order != original_pointer_order) {
/* this isn't the pointer track */
if (canvas_pointer_y_span > 0) {
/* moving up the canvas */
- if ((atv2->order - canvas_pointer_y_span) >= visible_y_low) {
+ if ((rtv2->order - canvas_pointer_y_span) >= visible_y_low) {
int32_t visible_tracks = 0;
while (visible_tracks < canvas_pointer_y_span ) {
visible_tracks++;
- while (height_list[atv2->order - (visible_tracks - n)] == 0) {
+ while (height_list[rtv2->order - (visible_tracks - n)] == 0) {
/* we're passing through a hidden track */
n--;
}
}
- if (tracks[atv2->order - (canvas_pointer_y_span - n)] != 0x00) {
+ if (tracks[rtv2->order - (canvas_pointer_y_span - n)] != 0x00) {
clamp_y_axis = true;
}
@@ -2973,7 +2973,7 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
/*moving down the canvas*/
- if ((atv2->order - (canvas_pointer_y_span - n)) <= visible_y_high) { // we will overflow
+ if ((rtv2->order - (canvas_pointer_y_span - n)) <= visible_y_high) { // we will overflow
int32_t visible_tracks = 0;
@@ -2981,11 +2981,11 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
while (visible_tracks > canvas_pointer_y_span ) {
visible_tracks--;
- while (height_list[atv2->order - (visible_tracks - n)] == 0) {
+ while (height_list[rtv2->order - (visible_tracks - n)] == 0) {
n++;
}
}
- if ( tracks[atv2->order - ( canvas_pointer_y_span - n)] != 0x00) {
+ if ( tracks[rtv2->order - ( canvas_pointer_y_span - n)] != 0x00) {
clamp_y_axis = true;
}
@@ -2998,9 +2998,9 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
} else {
/* this is the pointer's track */
- if ((atv2->order - pointer_y_span) > visible_y_high) { // we will overflow
+ if ((rtv2->order - pointer_y_span) > visible_y_high) { // we will overflow
clamp_y_axis = true;
- } else if ((atv2->order - pointer_y_span) < visible_y_low) { // we will underflow
+ } else if ((rtv2->order - pointer_y_span) < visible_y_low) { // we will underflow
clamp_y_axis = true;
}
}
@@ -3136,14 +3136,14 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
rv->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2);
rv->get_canvas_group()->i2w (ix1, iy1);
TimeAxisView* tvp2 = trackview_by_y_position (iy1);
- AudioTimeAxisView* canvas_atv = dynamic_cast<AudioTimeAxisView*>(tvp2);
- AudioTimeAxisView* temp_atv;
+ RouteTimeAxisView* canvas_rtv = dynamic_cast<RouteTimeAxisView*>(tvp2);
+ RouteTimeAxisView* temp_rtv;
if ((pointer_y_span != 0) && !clamp_y_axis) {
y_delta = 0;
int32_t x = 0;
for (j = height_list.begin(); j!= height_list.end(); j++) {
- if (x == canvas_atv->order) {
+ if (x == canvas_rtv->order) {
/* we found the track the region is on */
if (x != original_pointer_order) {
/*this isn't from the same track we're dragging from */
@@ -3181,14 +3181,14 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
/* find out where we'll be when we move and set height accordingly */
tvp2 = trackview_by_y_position (iy1 + y_delta);
- temp_atv = dynamic_cast<AudioTimeAxisView*>(tvp2);
- rv->set_height (temp_atv->height);
+ temp_rtv = dynamic_cast<RouteTimeAxisView*>(tvp2);
+ rv->set_height (temp_rtv->height);
/* if you un-comment the following, the region colours will follow the track colours whilst dragging,
personally, i think this can confuse things, but never mind.
*/
- //const GdkColor& col (temp_atv->view->get_region_color());
+ //const GdkColor& col (temp_rtv->view->get_region_color());
//rv->set_color (const_cast<GdkColor&>(col));
break;
}
@@ -3229,9 +3229,9 @@ Editor::region_drag_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
the motion is done.
*/
- AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*> (&rv->get_time_axis_view());
- if (atv && atv->is_audio_track()) {
- AudioPlaylist* pl = dynamic_cast<AudioPlaylist*>(atv->get_diskstream()->playlist());
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*> (&rv->get_time_axis_view());
+ if (rtv && rtv->is_track()) {
+ Playlist* pl = dynamic_cast<Playlist*>(rtv->get_diskstream()->playlist());
if (pl) {
/* only freeze and capture state once */
@@ -3300,7 +3300,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
/* adjust for track speed */
speed = 1.0;
- atv = dynamic_cast<AudioTimeAxisView*> (drag_info.last_trackview);
+ atv = dynamic_cast<RouteTimeAxisView*> (drag_info.last_trackview);
if (atv && atv->get_diskstream()) {
speed = atv->get_diskstream()->speed();
}
@@ -3348,7 +3348,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
(*i)->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2);
(*i)->get_canvas_group()->i2w (ix1, iy1);
TimeAxisView* tvp2 = trackview_by_y_position (iy1);
- AudioTimeAxisView* atv2 = dynamic_cast<AudioTimeAxisView*>(tvp2);
+ RouteTimeAxisView* atv2 = dynamic_cast<RouteTimeAxisView*>(tvp2);
from_playlist = (*i)->region().playlist();
to_playlist = atv2->playlist();
@@ -3383,7 +3383,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
(*i)->get_canvas_frame()->get_bounds (ix1, iy1, ix2, iy2);
(*i)->get_canvas_group()->i2w (ix1, iy1);
TimeAxisView* tvp2 = trackview_by_y_position (iy1);
- AudioTimeAxisView* atv2 = dynamic_cast<AudioTimeAxisView*>(tvp2);
+ RouteTimeAxisView* atv2 = dynamic_cast<RouteTimeAxisView*>(tvp2);
from_playlist = (*i)->region().playlist();
to_playlist = atv2->playlist();
@@ -3418,7 +3418,7 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
if (regionview_x_movement) {
double ownspeed = 1.0;
- AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*> (&(rv->get_time_axis_view()));
+ RouteTimeAxisView* atv = dynamic_cast<RouteTimeAxisView*> (&(rv->get_time_axis_view()));
if (atv && atv->get_diskstream()) {
ownspeed = atv->get_diskstream()->speed();
@@ -3467,9 +3467,9 @@ Editor::region_view_item_click (AudioRegionView& rv, GdkEventButton* event)
if (Keyboard::modifier_state_contains (event->state, Keyboard::Control)) {
TimeAxisView* tv = &rv.get_time_axis_view();
- AudioTimeAxisView* atv = dynamic_cast<AudioTimeAxisView*>(tv);
+ RouteTimeAxisView* atv = dynamic_cast<RouteTimeAxisView*>(tv);
double speed = 1.0;
- if (atv && atv->is_audio_track()) {
+ if (atv && atv->is_track()) {
speed = atv->get_diskstream()->speed();
}
@@ -3904,9 +3904,9 @@ Editor::start_trim (ArdourCanvas::Item* item, GdkEvent* event)
{
double speed = 1.0;
TimeAxisView* tvp = clicked_trackview;
- AudioTimeAxisView* tv = dynamic_cast<AudioTimeAxisView*>(tvp);
+ RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
- if (tv && tv->is_audio_track()) {
+ if (tv && tv->is_track()) {
speed = tv->get_diskstream()->speed();
}
@@ -3967,7 +3967,7 @@ Editor::trim_motion_callback (ArdourCanvas::Item* item, GdkEvent* event)
RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
pair<set<Playlist*>::iterator,bool> insert_result;
- if (tv && tv->is_audio_track()) {
+ if (tv && tv->is_track()) {
speed = tv->get_diskstream()->speed();
}
@@ -4093,7 +4093,7 @@ Editor::single_contents_trim (RegionView& rv, jack_nframes_t frame_delta, bool l
TimeAxisView* tvp = clicked_trackview;
RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
- if (tv && tv->is_audio_track()) {
+ if (tv && tv->is_track()) {
speed = tv->get_diskstream()->speed();
}
@@ -4131,9 +4131,9 @@ Editor::single_start_trim (RegionView& rv, jack_nframes_t frame_delta, bool left
double speed = 1.0;
TimeAxisView* tvp = clicked_trackview;
- AudioTimeAxisView* tv = dynamic_cast<AudioTimeAxisView*>(tvp);
+ RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
- if (tv && tv->is_audio_track()) {
+ if (tv && tv->is_track()) {
speed = tv->get_diskstream()->speed();
}
@@ -4165,9 +4165,9 @@ Editor::single_end_trim (RegionView& rv, jack_nframes_t frame_delta, bool left_d
double speed = 1.0;
TimeAxisView* tvp = clicked_trackview;
- AudioTimeAxisView* tv = dynamic_cast<AudioTimeAxisView*>(tvp);
+ RouteTimeAxisView* tv = dynamic_cast<RouteTimeAxisView*>(tvp);
- if (tv && tv->is_audio_track()) {
+ if (tv && tv->is_track()) {
speed = tv->get_diskstream()->speed();
}
@@ -4824,7 +4824,7 @@ Editor::mouse_brush_insert_region (RegionView* rv, jack_nframes_t pos)
RouteTimeAxisView* atv = dynamic_cast<RouteTimeAxisView*>(&arv->get_time_axis_view());
- if (atv == 0 || !atv->is_audio_track()) {
+ if (atv == 0 || !atv->is_track()) {
return;
}
diff --git a/gtk2_ardour/editor_ops.cc b/gtk2_ardour/editor_ops.cc
index 9b69026a01..30e19c484c 100644
--- a/gtk2_ardour/editor_ops.cc
+++ b/gtk2_ardour/editor_ops.cc
@@ -2275,6 +2275,8 @@ Editor::new_region_from_selection ()
void
Editor::separate_region_from_selection ()
{
+ // FIXME: TYPE
+
bool doing_undo = false;
if (selection->time.empty()) {
@@ -2321,6 +2323,8 @@ Editor::separate_region_from_selection ()
void
Editor::separate_regions_using_location (Location& loc)
{
+ // FIXME: TYPE
+
bool doing_undo = false;
if (loc.is_mark()) {
@@ -2391,15 +2395,12 @@ Editor::crop_region_to_selection ()
for (TrackSelection::iterator i = selection->tracks.begin(); i != selection->tracks.end(); ++i) {
- AudioTimeAxisView* atv;
+ RouteTimeAxisView* rtv = dynamic_cast<RouteTimeAxisView*>(*i);
- if ((atv = dynamic_cast<AudioTimeAxisView*> ((*i))) != 0) {
+ if (rtv && rtv->is_track()) {
- if (atv->is_audio_track()) {
-
- if ((playlist = atv->playlist()) != 0) {
- playlists.push_back (playlist);
- }
+ if ((playlist = rtv->playlist()) != 0) {
+ playlists.push_back (playlist);
}
}
}
@@ -2460,8 +2461,7 @@ Editor::region_fill_track ()
// FIXME
AudioRegion* const ar = dynamic_cast<AudioRegion*>(&region);
- if (!ar)
- continue;
+ assert(ar);
Playlist* pl = region.playlist();
@@ -2475,7 +2475,7 @@ Editor::region_fill_track ()
return;
}
- XMLNode &before = pl->get_state();
+ XMLNode &before = pl->get_state();
pl->add_region (*(new AudioRegion (*ar)), ar->last_frame(), times);
session->add_command (new MementoCommand<Playlist>(*pl, before, pl->get_state()));
}
@@ -2486,7 +2486,7 @@ Editor::region_fill_track ()
void
Editor::region_fill_selection ()
{
- if (clicked_audio_trackview == 0 || !clicked_audio_trackview->is_audio_track()) {
+ if (clicked_audio_trackview == 0 || !clicked_audio_trackview->is_audio_track()) {
return;
}
@@ -2613,7 +2613,7 @@ Editor::align_relative (RegionPoint what)
}
struct RegionSortByTime {
- bool operator() (const AudioRegionView* a, const AudioRegionView* b) {
+ bool operator() (const RegionView* a, const RegionView* b) {
return a->region().position() < b->region().position();
}
};
@@ -2781,11 +2781,11 @@ Editor::trim_region_from_edit_cursor ()
void
Editor::unfreeze_route ()
{
- if (clicked_audio_trackview == 0 || !clicked_audio_trackview->is_audio_track()) {
+ if (clicked_audio_trackview == 0 || !clicked_audio_trackview->is_track()) {
return;
}
- clicked_audio_trackview->audio_track()->unfreeze ();
+ clicked_audio_trackview->track()->unfreeze ();
}
void*
@@ -2812,7 +2812,7 @@ Editor::freeze_progress_timeout (void *arg)
void
Editor::freeze_route ()
{
- if (clicked_audio_trackview == 0 || !clicked_audio_trackview->is_audio_track()) {
+ if (clicked_audio_trackview == 0 || !clicked_audio_trackview->is_track()) {
return;
}
diff --git a/gtk2_ardour/editor_region_list.cc b/gtk2_ardour/editor_region_list.cc
index 5cf099433b..7df91cfa4f 100644
--- a/gtk2_ardour/editor_region_list.cc
+++ b/gtk2_ardour/editor_region_list.cc
@@ -48,22 +48,22 @@ using namespace Glib;
using namespace Editing;
void
-Editor::handle_audio_region_removed (AudioRegion* region)
+Editor::handle_region_removed (Region* region)
{
- ENSURE_GUI_THREAD (bind (mem_fun (*this, &Editor::handle_audio_region_removed), region));
+ ENSURE_GUI_THREAD (bind (mem_fun (*this, &Editor::handle_region_removed), region));
redisplay_regions ();
}
void
-Editor::handle_new_audio_region (AudioRegion *region)
+Editor::handle_new_region (Region *region)
{
- ENSURE_GUI_THREAD (bind (mem_fun (*this, &Editor::handle_new_audio_region), region));
+ ENSURE_GUI_THREAD (bind (mem_fun (*this, &Editor::handle_new_region), region));
/* don't copy region - the one we are being notified
about belongs to the session, and so it will
never be edited.
*/
- add_audio_region_to_region_display (region);
+ add_region_to_region_display (region);
}
void
@@ -75,7 +75,7 @@ Editor::region_hidden (Region* r)
}
void
-Editor::add_audio_region_to_region_display (AudioRegion *region)
+Editor::add_region_to_region_display (Region *region)
{
string str;
TreeModel::Row row;
@@ -206,14 +206,14 @@ Editor::region_list_selection_changed()
}
void
-Editor::insert_into_tmp_audio_regionlist(AudioRegion* region)
+Editor::insert_into_tmp_regionlist(Region* region)
{
/* keep all whole files at the beginning */
if (region->whole_file()) {
- tmp_audio_region_list.push_front (region);
+ tmp_region_list.push_front (region);
} else {
- tmp_audio_region_list.push_back (region);
+ tmp_region_list.push_back (region);
}
}
@@ -229,11 +229,11 @@ Editor::redisplay_regions ()
sorting.
*/
- tmp_audio_region_list.clear();
- session->foreach_audio_region (this, &Editor::insert_into_tmp_audio_regionlist);
+ tmp_region_list.clear();
+ session->foreach_region (this, &Editor::insert_into_tmp_regionlist);
- for (list<AudioRegion*>::iterator r = tmp_audio_region_list.begin(); r != tmp_audio_region_list.end(); ++r) {
- add_audio_region_to_region_display (*r);
+ for (list<Region*>::iterator r = tmp_region_list.begin(); r != tmp_region_list.end(); ++r) {
+ add_region_to_region_display (*r);
}
region_list_display.set_model (region_list_model);
diff --git a/gtk2_ardour/editor_tempodisplay.cc b/gtk2_ardour/editor_tempodisplay.cc
index 9f7fe7cf09..2e4e092ebd 100644
--- a/gtk2_ardour/editor_tempodisplay.cc
+++ b/gtk2_ardour/editor_tempodisplay.cc
@@ -134,10 +134,10 @@ Editor::hide_measures ()
ArdourCanvas::SimpleLine *
Editor::get_time_line ()
{
- ArdourCanvas::SimpleLine *line;
+ ArdourCanvas::SimpleLine *line;
if (free_measure_lines.empty()) {
- line = new ArdourCanvas::SimpleLine (*time_line_group);
+ line = new ArdourCanvas::SimpleLine (*time_line_group);
used_measure_lines.push_back (line);
} else {
line = free_measure_lines.front();
@@ -194,6 +194,7 @@ Editor::draw_measures ()
double x1, x2, y1, y2;
track_canvas.get_scroll_region (x1, y1, x2, y2);
+ y2 = 1000000000.0f;
for (i = all_bbt_points->begin(); i != all_bbt_points->end(); ++i) {
diff --git a/gtk2_ardour/midi_region_view.cc b/gtk2_ardour/midi_region_view.cc
index d716a5605a..2e102b4f70 100644
--- a/gtk2_ardour/midi_region_view.cc
+++ b/gtk2_ardour/midi_region_view.cc
@@ -68,7 +68,8 @@ MidiRegionView::init (Gdk::Color& basic_color, bool wfd)
// FIXME: Some redundancy here with RegionView::init. Need to figure out
// where order is important and where it isn't...
- RegionView::init(basic_color, wfd);
+ // FIXME
+ RegionView::init(basic_color, /*wfd*/false);
compute_colors (basic_color);
@@ -108,6 +109,7 @@ MidiRegionView::show_region_editor ()
GhostRegion*
MidiRegionView::add_ghost (AutomationTimeAxisView& atv)
{
+ throw; // FIXME
return NULL;
}
diff --git a/gtk2_ardour/midi_streamview.cc b/gtk2_ardour/midi_streamview.cc
index 60372e640f..5f939ab583 100644
--- a/gtk2_ardour/midi_streamview.cc
+++ b/gtk2_ardour/midi_streamview.cc
@@ -29,11 +29,11 @@
#include <ardour/midi_diskstream.h>
#include <ardour/midi_track.h>
//#include <ardour/playlist_templates.h>
-#include <ardour/source.h>
+#include <ardour/midi_source.h>
#include "midi_streamview.h"
#include "region_view.h"
-//#include "midi_regionview.h"
+#include "midi_region_view.h"
#include "midi_time_axis.h"
#include "canvas-simplerect.h"
#include "region_selection.h"
@@ -52,55 +52,26 @@ using namespace Editing;
MidiStreamView::MidiStreamView (MidiTimeAxisView& tv)
: StreamView (tv)
{
- region_color = _trackview.color();
-
- if (tv.is_midi_track())
+ if (tv.is_track())
stream_base_color = color_map[cMidiTrackBase];
else
stream_base_color = color_map[cMidiBusBase];
-
- /* set_position() will position the group */
-
- canvas_group = new ArdourCanvas::Group(*_trackview.canvas_display);
-
- canvas_rect = new ArdourCanvas::SimpleRect (*canvas_group);
- canvas_rect->property_x1() = 0.0;
- canvas_rect->property_y1() = 0.0;
- canvas_rect->property_x2() = 1000000.0;
- canvas_rect->property_y2() = (double) tv.height;
- canvas_rect->property_outline_color_rgba() = color_map[cMidiTrackOutline];
- canvas_rect->property_outline_what() = (guint32) (0x1|0x2|0x8); // outline ends and bottom
+
canvas_rect->property_fill_color_rgba() = stream_base_color;
+ canvas_rect->property_outline_color_rgba() = color_map[cAudioTrackOutline];
- canvas_rect->signal_event().connect (bind (mem_fun (_trackview.editor, &PublicEditor::canvas_stream_view_event), canvas_rect, &_trackview));
-
- _samples_per_unit = _trackview.editor.get_current_zoom();
-
- if (_trackview.is_midi_track()) {
- _trackview.midi_track()->DiskstreamChanged.connect (mem_fun (*this, &MidiStreamView::diskstream_changed));
- _trackview.session().TransportStateChange.connect (mem_fun (*this, &MidiStreamView::transport_changed));
- _trackview.get_diskstream()->RecordEnableChanged.connect (mem_fun (*this, &MidiStreamView::rec_enable_changed));
- _trackview.session().RecordStateChanged.connect (mem_fun (*this, &MidiStreamView::sess_rec_enable_changed));
- }
-
- rec_updating = false;
- rec_active = false;
- use_rec_regions = tv.editor.show_waveforms_recording ();
-
- ColorChanged.connect (mem_fun (*this, &MidiStreamView::color_handler));
+ //use_rec_regions = tv.editor.show_waveforms_recording ();
+ use_rec_regions = true;
}
MidiStreamView::~MidiStreamView ()
{
- undisplay_diskstream ();
- delete canvas_group;
}
void
MidiStreamView::add_region_view_internal (Region *r, bool wait_for_waves)
{
-#if 0
ENSURE_GUI_THREAD (bind (mem_fun (*this, &MidiStreamView::add_region_view), r));
MidiRegion* region = dynamic_cast<MidiRegion*> (r);
@@ -122,30 +93,25 @@ MidiStreamView::add_region_view_internal (Region *r, bool wait_for_waves)
}
}
- /* FIXME
- switch (_trackview.midi_track()->mode()) {
- case Normal:
- region_view = new MidiRegionView (canvas_group, _trackview, *region,
- _samples_per_unit, region_color);
- break;
- case Destructive:
- region_view = new TapeMidiRegionView (canvas_group, _trackview, *region,
- _samples_per_unit, region_color);
- break;
- }
- */
+ // can't we all just get along?
+ assert(_trackview.midi_track()->mode() != Destructive);
+
region_view = new MidiRegionView (canvas_group, _trackview, *region,
- _samples_per_unit, region_color);
+ _samples_per_unit, region_color);
region_view->init (region_color, wait_for_waves);
region_views.push_front (region_view);
+ /* follow global waveform setting */
+
+ // FIXME
+ //region_view->set_waveform_visible(_trackview.editor.show_waveforms());
+
/* catch regionview going away */
region->GoingAway.connect (mem_fun (*this, &MidiStreamView::remove_region_view));
RegionViewAdded (region_view);
-#endif
}
// FIXME: code duplication with AudioStreamVIew
@@ -183,26 +149,30 @@ MidiStreamView::redisplay_diskstream ()
void
MidiStreamView::setup_rec_box ()
{
-#if 0
// cerr << _trackview.name() << " streamview SRB\n";
if (_trackview.session().transport_rolling()) {
- // cerr << "\trolling\n";
+ cerr << "\tSHOW: rolling\n";
if (!rec_active &&
_trackview.session().record_status() == Session::Recording &&
_trackview.get_diskstream()->record_enabled()) {
- if (_trackview.midi_track()->mode() == Normal && use_rec_regions && rec_regions.size() == rec_rects.size()) {
+ if (use_rec_regions && rec_regions.size() == rec_rects.size()) {
/* add a new region, but don't bother if they set use_rec_regions mid-record */
MidiRegion::SourceList sources;
// FIXME
- MidiDiskstream* ads = dynamic_cast<MidiDiskstream*>(_trackview.get_diskstream());
- assert(ads);
+ MidiDiskstream* mds = dynamic_cast<MidiDiskstream*>(_trackview.get_diskstream());
+ assert(mds);
+
+ sources.push_back((Source*)mds->write_source());
+
+ // FIXME
+ rec_data_ready_connections.push_back (mds->write_source()->ViewDataRangeReady.connect (bind (mem_fun (*this, &MidiStreamView::rec_data_range_ready), mds->write_source())));
// handle multi
@@ -222,30 +192,17 @@ MidiStreamView::setup_rec_box ()
/* start a new rec box */
- MidiTrack* at;
-
- at = _trackview.midi_track(); /* we know what it is already */
- MidiDiskstream& ds = at->midi_diskstream();
+ MidiTrack* mt = _trackview.midi_track(); /* we know what it is already */
+ MidiDiskstream& ds = mt->midi_diskstream();
jack_nframes_t frame_pos = ds.current_capture_start ();
gdouble xstart = _trackview.editor.frame_to_pixel (frame_pos);
gdouble xend;
uint32_t fill_color;
- switch (_trackview.midi_track()->mode()) {
- case Normal:
- xend = xstart;
- fill_color = color_map[cRecordingRectFill];
- break;
-
- case Destructive:
- xend = xstart + 2;
- fill_color = color_map[cRecordingRectFill];
- /* make the recording rect translucent to allow
- the user to see the peak data coming in, etc.
- */
- fill_color = UINT_RGBA_CHANGE_A (fill_color, 120);
- break;
- }
+ assert(_trackview.midi_track()->mode() == Normal);
+
+ xend = xstart;
+ fill_color = color_map[cRecordingRectFill];
ArdourCanvas::SimpleRect * rec_rect = new Gnome::Canvas::SimpleRect (*canvas_group);
rec_rect->property_x1() = xstart;
@@ -267,10 +224,16 @@ MidiStreamView::setup_rec_box ()
rec_updating = true;
rec_active = true;
+ // Show, damn you!
+ rec_rect->show();
+ rec_rect->raise_to_top();
+
} else if (rec_active &&
(_trackview.session().record_status() != Session::Recording ||
!_trackview.get_diskstream()->record_enabled())) {
+ cerr << "NO SHOW 1\n";
+
screen_update_connection.disconnect();
rec_active = false;
rec_updating = false;
@@ -279,21 +242,21 @@ MidiStreamView::setup_rec_box ()
} else {
- // cerr << "\tNOT rolling, rec_rects = " << rec_rects.size() << " rec_regions = " << rec_regions.size() << endl;
+ cerr << "\tNOT rolling, rec_rects = " << rec_rects.size() << " rec_regions = " << rec_regions.size() << endl;
if (!rec_rects.empty() || !rec_regions.empty()) {
/* disconnect rapid update */
screen_update_connection.disconnect();
- for (list<sigc::connection>::iterator prc = peak_ready_connections.begin(); prc != peak_ready_connections.end(); ++prc) {
+ for (list<sigc::connection>::iterator prc = rec_data_ready_connections.begin(); prc != rec_data_ready_connections.end(); ++prc) {
(*prc).disconnect();
}
- peak_ready_connections.clear();
+ rec_data_ready_connections.clear();
rec_updating = false;
rec_active = false;
- last_rec_peak_frame = 0;
+ last_rec_data_frame = 0;
/* remove temp regions */
for (list<Region*>::iterator iter=rec_regions.begin(); iter != rec_regions.end(); )
@@ -324,15 +287,14 @@ MidiStreamView::setup_rec_box ()
}
}
-#endif
}
void
MidiStreamView::update_rec_regions ()
{
-#if 0
if (use_rec_regions) {
+
uint32_t n = 0;
for (list<Region*>::iterator iter = rec_regions.begin(); iter != rec_regions.end(); n++) {
@@ -356,9 +318,9 @@ MidiStreamView::update_rec_regions ()
if (region == rec_regions.back() && rec_active) {
- if (last_rec_peak_frame > region->start()) {
+ if (last_rec_data_frame > region->start()) {
- jack_nframes_t nlen = last_rec_peak_frame - region->start();
+ jack_nframes_t nlen = last_rec_data_frame - region->start();
if (nlen != region->length()) {
@@ -408,7 +370,28 @@ MidiStreamView::update_rec_regions ()
iter = tmp;
}
}
-#endif
+}
+
+void
+MidiStreamView::rec_data_range_ready (jack_nframes_t start, jack_nframes_t cnt, Source * src)
+{
+ // this is called from the butler thread for now
+ // yeah we need a "peak" building thread or something. whatever. :)
+
+ ENSURE_GUI_THREAD(bind (mem_fun (*this, &MidiStreamView::rec_data_range_ready), start, cnt, src));
+
+ //cerr << "REC DATA: " << start << " --- " << cnt << endl;
+
+ if (rec_data_ready_map.size() == 0 || start+cnt > last_rec_data_frame) {
+ last_rec_data_frame = start + cnt;
+ }
+
+ rec_data_ready_map[src] = true;
+
+ if (rec_data_ready_map.size() == _trackview.get_diskstream()->n_channels().get(DataType::MIDI)) {
+ this->update_rec_regions ();
+ rec_data_ready_map.clear();
+ }
}
void
diff --git a/gtk2_ardour/midi_streamview.h b/gtk2_ardour/midi_streamview.h
index 0b13f9fd7f..107a804db8 100644
--- a/gtk2_ardour/midi_streamview.h
+++ b/gtk2_ardour/midi_streamview.h
@@ -62,7 +62,7 @@ class MidiStreamView : public StreamView
private:
void setup_rec_box ();
- void rec_peak_range_ready (jack_nframes_t start, jack_nframes_t cnt, ARDOUR::Source* src);
+ void rec_data_range_ready (jack_nframes_t start, jack_nframes_t cnt, ARDOUR::Source* src);
void update_rec_regions ();
void add_region_view_internal (ARDOUR::Region*, bool wait_for_waves);
diff --git a/gtk2_ardour/midi_time_axis.cc b/gtk2_ardour/midi_time_axis.cc
index 041eebff10..9300986960 100644
--- a/gtk2_ardour/midi_time_axis.cc
+++ b/gtk2_ardour/midi_time_axis.cc
@@ -98,26 +98,27 @@ MidiTimeAxisView::MidiTimeAxisView (PublicEditor& ed, Session& sess, boost::shar
/* map current state of the route */
- //redirects_changed (0);
+ redirects_changed (0);
ensure_xml_node ();
set_state (*xml_node);
- //_route.redirects_changed.connect (mem_fun(*this, &MidiTimeAxisView::redirects_changed));
+ _route->redirects_changed.connect (mem_fun(*this, &MidiTimeAxisView::redirects_changed));
- if (is_midi_track()) {
+ if (is_track()) {
controls_ebox.set_name ("MidiTrackControlsBaseUnselected");
controls_base_selected_name = "MidiTrackControlsBaseSelected";
controls_base_unselected_name = "MidiTrackControlsBaseUnselected";
/* ask for notifications of any new RegionViews */
- //view->MidiRegionViewAdded.connect (mem_fun(*this, &MidiTimeAxisView::region_view_added));
- //view->attach ();
+ _view->RegionViewAdded.connect (mem_fun(*this, &MidiTimeAxisView::region_view_added));
+ _view->attach ();
} else { /* bus */
+ throw; // what the?
controls_ebox.set_name ("MidiBusControlsBaseUnselected");
controls_base_selected_name = "MidiBusControlsBaseSelected";
controls_base_unselected_name = "MidiBusControlsBaseUnselected";
@@ -174,75 +175,6 @@ MidiTimeAxisView::set_state (const XMLNode& node)
}
}
-void
-MidiTimeAxisView::build_display_menu ()
-{
- using namespace Menu_Helpers;
-
- /* get the size menu ready */
-
- build_size_menu ();
-
- /* prepare it */
-
- TimeAxisView::build_display_menu ();
-
- /* now fill it with our stuff */
-
- MenuList& items = display_menu->items();
- display_menu->set_name ("ArdourContextMenu");
-
- items.push_back (MenuElem (_("Height"), *size_menu));
- items.push_back (MenuElem (_("Color"), mem_fun(*this, &MidiTimeAxisView::select_track_color)));
-
-
- items.push_back (SeparatorElem());
-
- build_remote_control_menu ();
- items.push_back (MenuElem (_("Remote Control ID"), *remote_control_menu));
-
- automation_action_menu = manage (new Menu);
- MenuList& automation_items = automation_action_menu->items();
- automation_action_menu->set_name ("ArdourContextMenu");
-
- automation_items.push_back (SeparatorElem());
-
- automation_items.push_back (MenuElem (_("Plugins"), subplugin_menu));
-
- if (is_midi_track()) {
-
- Menu* alignment_menu = manage (new Menu);
- MenuList& alignment_items = alignment_menu->items();
- alignment_menu->set_name ("ArdourContextMenu");
-
- RadioMenuItem::Group align_group;
-
- alignment_items.push_back (RadioMenuElem (align_group, _("Align with existing material"), bind (mem_fun(*this, &MidiTimeAxisView::set_align_style), ExistingMaterial)));
- align_existing_item = dynamic_cast<RadioMenuItem*>(&alignment_items.back());
- if (get_diskstream()->alignment_style() == ExistingMaterial) {
- align_existing_item->set_active();
- }
- alignment_items.push_back (RadioMenuElem (align_group, _("Align with capture time"), bind (mem_fun(*this, &MidiTimeAxisView::set_align_style), CaptureTime)));
- align_capture_item = dynamic_cast<RadioMenuItem*>(&alignment_items.back());
- if (get_diskstream()->alignment_style() == CaptureTime) {
- align_capture_item->set_active();
- }
-
- items.push_back (MenuElem (_("Alignment"), *alignment_menu));
-
- get_diskstream()->AlignmentStyleChanged.connect (mem_fun(*this, &MidiTimeAxisView::align_style_changed));
- }
-
- items.push_back (SeparatorElem());
- items.push_back (CheckMenuElem (_("Active"), mem_fun(*this, &RouteUI::toggle_route_active)));
- route_active_menu_item = dynamic_cast<CheckMenuItem *> (&items.back());
- route_active_menu_item->set_active (_route->active());
-
- items.push_back (SeparatorElem());
- items.push_back (MenuElem (_("Remove"), mem_fun(*this, &RouteUI::remove_this_route)));
-
-}
-
// FIXME: duplicated in audio_time_axis.cc
/*static string
legalize_for_xml_node (string str)
@@ -267,7 +199,7 @@ MidiTimeAxisView::route_active_changed ()
{
RouteUI::route_active_changed ();
- if (is_midi_track()) {
+ if (is_track()) {
if (_route->active()) {
controls_ebox.set_name ("MidiTrackControlsBaseUnselected");
controls_base_selected_name = "MidiTrackControlsBaseSelected";
@@ -278,6 +210,9 @@ MidiTimeAxisView::route_active_changed ()
controls_base_unselected_name = "MidiTrackControlsBaseInactiveUnselected";
}
} else {
+
+ throw; // wha?
+
if (_route->active()) {
controls_ebox.set_name ("BusControlsBaseUnselected");
controls_base_selected_name = "BusControlsBaseSelected";
diff --git a/gtk2_ardour/midi_time_axis.h b/gtk2_ardour/midi_time_axis.h
index be01e16d26..df1c964fee 100644
--- a/gtk2_ardour/midi_time_axis.h
+++ b/gtk2_ardour/midi_time_axis.h
@@ -74,14 +74,10 @@ class MidiTimeAxisView : public RouteTimeAxisView
XMLNode* get_child_xml_node (const string & childname);
private:
- void region_view_added (RegionView*) {}
-
void route_active_changed ();
//void redirects_changed (void *); FIXME?
- void build_display_menu ();
-
void add_redirect_to_subplugin_menu (ARDOUR::Redirect *);
Gtk::Menu subplugin_menu;
diff --git a/gtk2_ardour/route_ui.cc b/gtk2_ardour/route_ui.cc
index e90355fd0a..6b3c2a820c 100644
--- a/gtk2_ardour/route_ui.cc
+++ b/gtk2_ardour/route_ui.cc
@@ -300,10 +300,10 @@ RouteUI::rec_enable_press(GdkEventButton* ev)
} else {
- reversibly_apply_audio_track_boolean ("rec-enable change", &AudioTrack::set_record_enable, !audio_track()->record_enabled(), this);
+ reversibly_apply_track_boolean ("rec-enable change", &Track::set_record_enable, !track()->record_enabled(), this);
ignore_toggle = true;
- rec_enable_button->set_active(audio_track()->record_enabled());
+ rec_enable_button->set_active(track()->record_enabled());
ignore_toggle = false;
}
@@ -593,6 +593,17 @@ RouteUI::reversibly_apply_audio_track_boolean (string name, void (AudioTrack::*f
}
void
+RouteUI::reversibly_apply_track_boolean (string name, void (Track::*func)(bool, void *), bool yn, void *arg)
+{
+ _session.begin_reversible_command (name);
+ XMLNode &before = track()->get_state();
+ bind (mem_fun (*track(), func), yn, arg)();
+ XMLNode &after = track()->get_state();
+ _session.add_command (new MementoCommand<Track>(*track(), before, after));
+ _session.commit_reversible_command ();
+}
+
+void
RouteUI::set_mix_group_mute(boost::shared_ptr<Route> route, bool yn)
{
RouteGroup* mix_group;
diff --git a/gtk2_ardour/route_ui.h b/gtk2_ardour/route_ui.h
index 643c39b960..156063a8e5 100644
--- a/gtk2_ardour/route_ui.h
+++ b/gtk2_ardour/route_ui.h
@@ -156,6 +156,7 @@ class RouteUI : public virtual AxisView
void reversibly_apply_route_boolean (string name, void (ARDOUR::Route::*func)(bool, void*), bool, void *);
void reversibly_apply_audio_track_boolean (string name, void (ARDOUR::AudioTrack::*func)(bool, void*), bool, void *);
+ void reversibly_apply_track_boolean (string name, void (ARDOUR::Track::*func)(bool, void*), bool, void *);
};
#endif /* __ardour_route_ui__ */
diff --git a/gtk2_ardour/streamview.cc b/gtk2_ardour/streamview.cc
index d1d163d7a2..82f941f9bd 100644
--- a/gtk2_ardour/streamview.cc
+++ b/gtk2_ardour/streamview.cc
@@ -56,6 +56,7 @@ StreamView::StreamView (RouteTimeAxisView& tv)
, use_rec_regions(tv.editor.show_waveforms_recording())
, region_color(_trackview.color())
, stream_base_color(0xFFFFFFFF)
+ , last_rec_data_frame(0)
{
/* set_position() will position the group */
diff --git a/gtk2_ardour/streamview.h b/gtk2_ardour/streamview.h
index 5a0e10974f..bee51e8835 100644
--- a/gtk2_ardour/streamview.h
+++ b/gtk2_ardour/streamview.h
@@ -144,6 +144,10 @@ protected:
vector<sigc::connection> playlist_connections;
sigc::connection playlist_change_connection;
+
+ list<sigc::connection> rec_data_ready_connections;
+ jack_nframes_t last_rec_data_frame;
+ map<ARDOUR::Source*, bool> rec_data_ready_map;
};
#endif /* __ardour_streamview_h__ */