mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-09 00:04:56 +01:00
Don't allow drawing notes in rec regions (crash).
This commit is contained in:
parent
ec6626f06a
commit
5ee4a5d56a
3 changed files with 29 additions and 21 deletions
|
|
@ -142,8 +142,9 @@ MidiRegionView::MidiRegionView (ArdourCanvas::Container* parent,
|
||||||
boost::shared_ptr<MidiRegion> r,
|
boost::shared_ptr<MidiRegion> r,
|
||||||
double spu,
|
double spu,
|
||||||
uint32_t basic_color,
|
uint32_t basic_color,
|
||||||
|
bool recording,
|
||||||
TimeAxisViewItem::Visibility visibility)
|
TimeAxisViewItem::Visibility visibility)
|
||||||
: RegionView (parent, tv, r, spu, basic_color, false, visibility)
|
: RegionView (parent, tv, r, spu, basic_color, recording, visibility)
|
||||||
, _current_range_min(0)
|
, _current_range_min(0)
|
||||||
, _current_range_max(0)
|
, _current_range_max(0)
|
||||||
, _region_relative_time_converter(r->session().tempo_map(), r->position())
|
, _region_relative_time_converter(r->session().tempo_map(), r->position())
|
||||||
|
|
@ -340,7 +341,7 @@ MidiRegionView::connect_to_diskstream ()
|
||||||
bool
|
bool
|
||||||
MidiRegionView::canvas_group_event(GdkEvent* ev)
|
MidiRegionView::canvas_group_event(GdkEvent* ev)
|
||||||
{
|
{
|
||||||
if (in_destructor) {
|
if (in_destructor || _recregion) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,11 +68,20 @@ public:
|
||||||
typedef Evoral::Note<Evoral::MusicalTime> NoteType;
|
typedef Evoral::Note<Evoral::MusicalTime> NoteType;
|
||||||
typedef Evoral::Sequence<Evoral::MusicalTime>::Notes Notes;
|
typedef Evoral::Sequence<Evoral::MusicalTime>::Notes Notes;
|
||||||
|
|
||||||
MidiRegionView (ArdourCanvas::Container *,
|
MidiRegionView (ArdourCanvas::Container* parent,
|
||||||
RouteTimeAxisView&,
|
RouteTimeAxisView& tv,
|
||||||
boost::shared_ptr<ARDOUR::MidiRegion>,
|
boost::shared_ptr<ARDOUR::MidiRegion> r,
|
||||||
double initial_samples_per_pixel,
|
double samples_per_pixel,
|
||||||
uint32_t base_color);
|
uint32_t basic_color);
|
||||||
|
|
||||||
|
MidiRegionView (ArdourCanvas::Container* parent,
|
||||||
|
RouteTimeAxisView& tv,
|
||||||
|
boost::shared_ptr<ARDOUR::MidiRegion> r,
|
||||||
|
double samples_per_pixel,
|
||||||
|
uint32_t basic_color,
|
||||||
|
bool recording,
|
||||||
|
Visibility visibility);
|
||||||
|
|
||||||
|
|
||||||
MidiRegionView (const MidiRegionView& other);
|
MidiRegionView (const MidiRegionView& other);
|
||||||
MidiRegionView (const MidiRegionView& other, boost::shared_ptr<ARDOUR::MidiRegion>);
|
MidiRegionView (const MidiRegionView& other, boost::shared_ptr<ARDOUR::MidiRegion>);
|
||||||
|
|
@ -322,16 +331,6 @@ public:
|
||||||
ARDOUR::InstrumentInfo& instrument_info() const;
|
ARDOUR::InstrumentInfo& instrument_info() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
/** Allows derived types to specify their visibility requirements
|
|
||||||
* to the TimeAxisViewItem parent class.
|
|
||||||
*/
|
|
||||||
MidiRegionView (ArdourCanvas::Container *,
|
|
||||||
RouteTimeAxisView&,
|
|
||||||
boost::shared_ptr<ARDOUR::MidiRegion>,
|
|
||||||
double samples_per_pixel,
|
|
||||||
uint32_t basic_color,
|
|
||||||
TimeAxisViewItem::Visibility);
|
|
||||||
|
|
||||||
void region_resized (const PBD::PropertyChange&);
|
void region_resized (const PBD::PropertyChange&);
|
||||||
|
|
||||||
void set_flags (XMLNode *);
|
void set_flags (XMLNode *);
|
||||||
|
|
|
||||||
|
|
@ -100,7 +100,7 @@ MidiStreamView::~MidiStreamView ()
|
||||||
}
|
}
|
||||||
|
|
||||||
RegionView*
|
RegionView*
|
||||||
MidiStreamView::create_region_view (boost::shared_ptr<Region> r, bool /*wfd*/, bool)
|
MidiStreamView::create_region_view (boost::shared_ptr<Region> r, bool /*wfd*/, bool recording)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<MidiRegion> region = boost::dynamic_pointer_cast<MidiRegion> (r);
|
boost::shared_ptr<MidiRegion> region = boost::dynamic_pointer_cast<MidiRegion> (r);
|
||||||
|
|
||||||
|
|
@ -108,8 +108,16 @@ MidiStreamView::create_region_view (boost::shared_ptr<Region> r, bool /*wfd*/, b
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
RegionView* region_view = new MidiRegionView (_canvas_group, _trackview, region,
|
RegionView* region_view = NULL;
|
||||||
_samples_per_pixel, region_color);
|
if (recording) {
|
||||||
|
region_view = new MidiRegionView (
|
||||||
|
_canvas_group, _trackview, region,
|
||||||
|
_samples_per_pixel, region_color, recording,
|
||||||
|
TimeAxisViewItem::Visibility(TimeAxisViewItem::ShowFrame));
|
||||||
|
} else {
|
||||||
|
region_view = new MidiRegionView (_canvas_group, _trackview, region,
|
||||||
|
_samples_per_pixel, region_color);
|
||||||
|
}
|
||||||
|
|
||||||
region_view->init (false);
|
region_view->init (false);
|
||||||
|
|
||||||
|
|
@ -488,7 +496,7 @@ MidiStreamView::setup_rec_box ()
|
||||||
region->set_start (_trackview.track()->current_capture_start()
|
region->set_start (_trackview.track()->current_capture_start()
|
||||||
- _trackview.track()->get_capture_start_frame (0));
|
- _trackview.track()->get_capture_start_frame (0));
|
||||||
region->set_position (_trackview.track()->current_capture_start());
|
region->set_position (_trackview.track()->current_capture_start());
|
||||||
RegionView* rv = add_region_view_internal (region, false);
|
RegionView* rv = add_region_view_internal (region, false, true);
|
||||||
MidiRegionView* mrv = dynamic_cast<MidiRegionView*> (rv);
|
MidiRegionView* mrv = dynamic_cast<MidiRegionView*> (rv);
|
||||||
mrv->begin_write ();
|
mrv->begin_write ();
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue