if (ev_size > scratch_size) {
scratch_size = ev_size;
}
-
- ev_size = scratch_size; // minimize realloc in read_event
+ ev_size = scratch_size; // ensure read_event only allocates if necessary
}
return dur;
size_t scratch_size = 0; // keep track of scratch and minimize reallocs
// FIXME: assumes tempo never changes after start
- const double frames_per_beat = _session.tempo_map().tempo_at(_timeline_position).frames_per_beat(
+ const Tempo& tempo = _session.tempo_map().tempo_at(_timeline_position);
+
+ const double frames_per_beat = tempo.frames_per_beat(
_session.engine().frame_rate(),
_session.tempo_map().meter_at(_timeline_position));
uint8_t* buf = NULL;
int ret;
while ((ret = read_event(&delta_t, &size, &buf)) >= 0) {
-
ev.set(buf, size, 0.0);
time += delta_t;
if (ev.size() > scratch_size) {
scratch_size = ev.size();
- } else {
- ev.size() = scratch_size;
}
+ ev.size() = scratch_size; // ensure read_event only allocates if necessary
}
set_default_controls_interpolation();