mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-17 04:06:26 +01:00
* Quick Fix: assertion converted into warning in MidiModel::write_to
git-svn-id: svn://localhost/ardour2/branches/3.0@3337 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
parent
d467245152
commit
277bfa35d5
2 changed files with 27 additions and 3 deletions
|
|
@ -879,8 +879,8 @@ XMLNode& MidiModel::DeltaCommand::get_state()
|
||||||
|
|
||||||
struct EventTimeComparator {
|
struct EventTimeComparator {
|
||||||
typedef const MIDI::Event* value_type;
|
typedef const MIDI::Event* value_type;
|
||||||
inline bool operator()(const MIDI::Event* a, const MIDI::Event* b) const {
|
inline bool operator()(const MIDI::Event& a, const MIDI::Event& b) const {
|
||||||
return a->time() >= b->time();
|
return a.time() >= b.time();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -893,15 +893,35 @@ struct EventTimeComparator {
|
||||||
*/
|
*/
|
||||||
bool MidiModel::write_to(boost::shared_ptr<MidiSource> source)
|
bool MidiModel::write_to(boost::shared_ptr<MidiSource> source)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
EventTimeComparator comp;
|
||||||
|
typedef std::priority_queue<
|
||||||
|
const MIDI::Event*,
|
||||||
|
std::deque<MIDI::Event>,
|
||||||
|
EventTimeComparator> MidiEvents;
|
||||||
|
|
||||||
|
MidiEvents events(comp);
|
||||||
|
*/
|
||||||
|
|
||||||
read_lock();
|
read_lock();
|
||||||
|
|
||||||
const NoteMode old_note_mode = _note_mode;
|
const NoteMode old_note_mode = _note_mode;
|
||||||
_note_mode = Sustained;
|
_note_mode = Sustained;
|
||||||
|
|
||||||
for (const_iterator i = begin(); i != end(); ++i) {
|
for (const_iterator i = begin(); i != end(); ++i) {
|
||||||
|
//events.push(*i);
|
||||||
source->append_event_unlocked(Frames, *i);
|
source->append_event_unlocked(Frames, *i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
// TODO: As of now, this is still necessary, because there are some events appended whose
|
||||||
|
// times are earlier than the preceding events
|
||||||
|
while(!events.empty()) {
|
||||||
|
source->append_event_unlocked(Frames, events.top());
|
||||||
|
events.pop();
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
_note_mode = old_note_mode;
|
_note_mode = old_note_mode;
|
||||||
|
|
||||||
read_unlock();
|
read_unlock();
|
||||||
|
|
|
||||||
|
|
@ -507,7 +507,11 @@ SMFSource::append_event_unlocked(EventTimeUnit unit, const MIDI::Event& ev)
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
assert(ev.time() >= 0);
|
assert(ev.time() >= 0);
|
||||||
assert(ev.time() >= _last_ev_time);
|
|
||||||
|
if (ev.time() < _last_ev_time) {
|
||||||
|
cerr << "SMFSource: Warning: Skipping event with ev.time() < _last_ev_time" << endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
uint32_t delta_time = 0;
|
uint32_t delta_time = 0;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue