Skip to content

Commit 38cae80

Browse files
committed
EventLoop in OfflineAudioContext: add fast path when no suspend/events
1 parent 30c2926 commit 38cae80

File tree

1 file changed

+22
-13
lines changed

1 file changed

+22
-13
lines changed

src/render/thread.rs

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -252,22 +252,31 @@ impl RenderThread {
252252
// Handle initial control messages
253253
self.handle_control_messages();
254254

255-
for quantum in 0..num_frames {
256-
// Suspend at given times and run callbacks
257-
if suspend_callbacks.first().map(|&(q, _)| q) == Some(quantum) {
258-
let callback = suspend_callbacks.remove(0).1;
259-
(callback)(context);
260-
261-
// Handle any control messages that may have been submitted by the callback
262-
self.handle_control_messages();
255+
// Fast path when
256+
// - no suspensions scheduled
257+
// - no script processor (so no event handling needed during rendering)
258+
if suspend_callbacks.is_empty() {
259+
for _ in 0..num_frames {
260+
self.render_offline_quantum(&mut buffer);
263261
}
262+
} else {
263+
for quantum in 0..num_frames {
264+
// Suspend at given times and run callbacks
265+
if suspend_callbacks.first().map(|&(q, _)| q) == Some(quantum) {
266+
let callback = suspend_callbacks.remove(0).1;
267+
(callback)(context);
268+
269+
// Handle any control messages that may have been submitted by the callback
270+
self.handle_control_messages();
271+
}
264272

265-
self.render_offline_quantum(&mut buffer);
273+
self.render_offline_quantum(&mut buffer);
266274

267-
let events_were_handled = event_loop.handle_pending_events();
268-
if events_were_handled {
269-
// Handle any control messages that may have been submitted by the handler
270-
self.handle_control_messages();
275+
let events_were_handled = event_loop.handle_pending_events();
276+
if events_were_handled {
277+
// Handle any control messages that may have been submitted by the handler
278+
self.handle_control_messages();
279+
}
271280
}
272281
}
273282

0 commit comments

Comments
 (0)