Revert stupid r4975.

git-svn-id: svn://localhost/ardour2/branches/3.0@4984 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
David Robillard 2009-04-16 14:34:56 +00:00
parent b90424cf80
commit d489a65dad

View File

@ -171,9 +171,9 @@ SMFSource::write_unlocked (MidiRingBuffer<nframes_t>& source, sframes_t position
{
_write_data_count = 0;
nframes_t event_time;
Evoral::EventType event_type;
uint32_t event_size;
nframes_t time;
Evoral::EventType type;
uint32_t size;
size_t buf_capacity = 4;
uint8_t* buf = (uint8_t*)malloc(buf_capacity);
@ -185,36 +185,36 @@ SMFSource::write_unlocked (MidiRingBuffer<nframes_t>& source, sframes_t position
Evoral::MIDIEvent<nframes_t> ev;
while (true) {
bool ret = source.peek_time(&event_time);
g_debug ("position: %lu, event_time: %u, last_write_end: %lu, duration: %u", position, event_time, _last_write_end, duration);
if (!ret || event_time > _last_write_end + duration) {
bool ret = source.peek_time(&time);
g_debug ("time: %u, last_write_end: %lu, duration: %u", time, _last_write_end, duration);
if (!ret || time > _last_write_end + duration) {
if (!ret) g_debug ("peek failed");
if (event_time > _last_write_end + duration) g_debug ("event_time: %u > last_write_end: %lu + duration: %u", event_time, _last_write_end, duration);
if (time > _last_write_end + duration) g_debug ("time: %u > last_write_end: %lu + duration: %u", time, _last_write_end, duration);
break;
}
ret = source.read_prefix(&event_time, &event_type, &event_size);
ret = source.read_prefix(&time, &type, &size);
if (!ret) {
cerr << "ERROR: Unable to read event prefix, corrupt MIDI ring buffer" << endl;
break;
}
if (event_size > buf_capacity) {
buf_capacity = event_size;
buf = (uint8_t*)realloc(buf, event_size);
if (size > buf_capacity) {
buf_capacity = size;
buf = (uint8_t*)realloc(buf, size);
}
ret = source.read_contents(event_size, buf);
ret = source.read_contents(size, buf);
if (!ret) {
cerr << "ERROR: Read event time/size but not buffer, corrupt MIDI ring buffer" << endl;
cerr << "ERROR: Read time/size but not buffer, corrupt MIDI ring buffer" << endl;
break;
}
assert(event_time >= position);
event_time -= position;
assert(time >= position);
time -= position;
ev.set(buf, event_size, event_time);
ev.set(buf, size, time);
ev.set_event_type(EventTypeMap::instance().midi_event_type(ev.buffer()[0]));
if (!(ev.is_channel_event() || ev.is_smf_meta_event() || ev.is_sysex())) {
cerr << "SMFSource: WARNING: caller tried to write non SMF-Event of type "