More gracefully handle type mismatch errors when doing playlist things (just ignore regions with the wrong type for this playlist).

git-svn-id: svn://localhost/ardour2/branches/3.0@3726 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
David Robillard 2008-09-14 19:01:08 +00:00
parent b69410425c
commit cb19d9cb1e
7 changed files with 18 additions and 18 deletions

View file

@ -93,7 +93,7 @@
<Option name="selection" value="636363b2"/>
<Option name="tempo bar" value="72727fff"/>
<Option name="tempo marker" value="f2425bff"/>
<Option name="time axis frame" value="0000000f"/>
<Option name="time axis frame" value="000000ff"/>
<Option name="time stretch fill" value="e2b5b596"/>
<Option name="time stretch outline" value="63636396"/>
<Option name="transport drag rect" value="969696c6"/>

View file

@ -177,12 +177,10 @@ AudioRegionView::init (Gdk::Color& basic_color, bool wfd)
fade_out_shape->property_fill_color_rgba() = fade_color;
fade_out_shape->set_data ("regionview", this);
{
uint32_t r,g,b,a;
UINT_TO_RGBA(fill_color,&r,&g,&b,&a);
fade_in_handle = new ArdourCanvas::SimpleRect (*group);
fade_in_handle->property_fill_color_rgba() = RGBA_TO_UINT(r,g,b,0);
fade_in_handle->property_outline_pixels() = 0;

View file

@ -3919,13 +3919,17 @@ Editor::region_drag_finished_callback (ArdourCanvas::Item* item, GdkEvent* event
//rv->get_time_axis_view().reveal_dependent_views (*rv);
} else if (changed_tracks) {
} else if (changed_tracks && dest_rtv->playlist()) {
new_region = RegionFactory::create (rv->region());
}
if (changed_tracks || drag_info.copy) {
boost::shared_ptr<Playlist> to_playlist = dest_rtv->playlist();
if (!to_playlist) {
++i;
continue;
}
latest_regionviews.clear ();

View file

@ -71,10 +71,7 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &
, _mouse_state(None)
, _pressed_button(0)
{
group->lower_to_bottom();
_note_group->raise_to_top();
frame->property_fill_color_rgba() = 0xff000033;
}
MidiRegionView::MidiRegionView (ArdourCanvas::Group *parent, RouteTimeAxisView &tv, boost::shared_ptr<MidiRegion> r, double spu, Gdk::Color& basic_color, TimeAxisViewItem::Visibility visibility)
@ -106,24 +103,23 @@ MidiRegionView::init (Gdk::Color& basic_color, bool wfd)
_model = midi_region()->midi_source(0)->model();
_enable_display = false;
RegionView::init(basic_color, false);
RegionView::init (basic_color, false);
compute_colors (basic_color);
reset_width_dependent_items ((double) _region->length() / samples_per_unit);
set_y_position_and_height (0, trackview.current_height());
region_muted ();
region_sync_changed ();
region_resized (BoundsChanged);
region_locked ();
_region->StateChanged.connect (mem_fun(*this, &MidiRegionView::region_changed));
reset_width_dependent_items (_pixel_width);
//reset_width_dependent_items ((double) _region->length() / samples_per_unit);
set_colors ();
_enable_display = true;
if (_model) {
if (wfd) {
redisplay_model();
@ -131,8 +127,6 @@ MidiRegionView::init (Gdk::Color& basic_color, bool wfd)
_model->ContentsChanged.connect(sigc::mem_fun(this, &MidiRegionView::redisplay_model));
}
midi_region()->midi_source(0)->Switched.connect(sigc::mem_fun(this, &MidiRegionView::switch_source));
group->signal_event().connect (mem_fun (this, &MidiRegionView::canvas_event), false);
midi_view()->signal_channel_mode_changed().connect(

View file

@ -163,6 +163,7 @@ TimeAxisViewItem::init (const string& it_name, double spu, Gdk::Color& base_colo
frame->property_y1() = (double) 1.0;
frame->property_x2() = (double) trackview.editor.frame_to_pixel(duration);
frame->property_y2() = (double) trackview.current_height();
frame->property_outline_pixels() = 1;
frame->property_outline_what() = 0xF;
frame->property_outline_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeAxisFrame.get();
frame->property_fill_color_rgba() = ARDOUR_UI::config()->canvasvar_TimeAxisFrame.get();

View file

@ -255,7 +255,7 @@ class Playlist : public SessionObject, public boost::enable_shared_from_this<Pla
boost::shared_ptr<Region> region_by_id (PBD::ID);
void add_region_internal (boost::shared_ptr<Region>, nframes_t position);
bool add_region_internal (boost::shared_ptr<Region>, nframes_t position);
int remove_region_internal (boost::shared_ptr<Region>);
RegionList *find_regions_at (nframes_t frame);

View file

@ -518,10 +518,11 @@ Playlist::set_region_ownership ()
}
}
void
bool
Playlist::add_region_internal (boost::shared_ptr<Region> region, nframes_t position)
{
assert(region->data_type() == _type);
if (region->data_type() != _type)
return false;
RegionSortByPosition cmp;
nframes_t old_length = 0;
@ -562,6 +563,8 @@ Playlist::add_region_internal (boost::shared_ptr<Region> region, nframes_t posit
region->StateChanged.connect (sigc::bind (mem_fun (this, &Playlist::region_changed_proxy),
boost::weak_ptr<Region> (region)));
return true;
}
void