StreamView::StreamView (RouteTimeAxisView& tv, ArdourCanvas::Group* group)
: _trackview (tv)
+ , owns_canvas_group(group == 0)
, canvas_group(group ? group : new ArdourCanvas::Group(*_trackview.canvas_display))
, canvas_rect(new ArdourCanvas::SimpleRect (*canvas_group))
, _samples_per_unit(_trackview.editor.get_current_zoom())
{
/* set_position() will position the group */
- canvas_rect = new ArdourCanvas::SimpleRect (*canvas_group);
canvas_rect->property_x1() = 0.0;
canvas_rect->property_y1() = 0.0;
canvas_rect->property_x2() = _trackview.editor.frame_to_pixel (max_frames);
StreamView::~StreamView ()
{
undisplay_diskstream ();
- delete canvas_group;
+
+ delete canvas_rect;
+
+ if (owns_canvas_group) {
+ delete canvas_group;
+ }
}
void
for (list<RegionView *>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
if (((*i)->region()) == r) {
- delete *i;
+ RegionView* rv = *i;
region_views.erase (i);
+ delete rv;
break;
}
}
void
StreamView::undisplay_diskstream ()
{
- for (RegionViewList::iterator i = region_views.begin(); i != region_views.end(); ++i) {
+ for (RegionViewList::iterator i = region_views.begin(); i != region_views.end() ; ) {
+ RegionViewList::iterator next = i;
+ ++next;
delete *i;
+ i = next;
}
region_views.clear();
{
bool selected;
- // cerr << _trackview.name() << " (selected = " << regions.size() << ")" << endl;
for (list<RegionView*>::iterator i = region_views.begin(); i != region_views.end(); ++i) {
selected = false;
selected = true;
}
}
-
- // cerr << "\tregion " << (*i)->region().name() << " selected = " << selected << endl;
+
(*i)->set_selected (selected);
}
}