Skip to content

Commit fde9707

Browse files
committed
Use local loop state in both render and control thread
Neither Firefox nor Chrome/Chromium use atomics for this purpose.
1 parent b974404 commit fde9707

File tree

12 files changed

+89
-120
lines changed

12 files changed

+89
-120
lines changed

benches/my_benchmark.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ pub fn bench_stereo_panning_automation() {
168168
panner.pan().set_value_at_time(-1., 0.);
169169
panner.pan().set_value_at_time(0.2, 0.5);
170170

171-
let src = ctx.create_buffer_source();
171+
let mut src = ctx.create_buffer_source();
172172
src.connect(&panner);
173173
src.set_buffer(buffer);
174174
src.set_loop(true);
@@ -188,7 +188,7 @@ pub fn bench_analyser_node() {
188188
let analyser = ctx.create_analyser();
189189
analyser.connect(&ctx.destination());
190190

191-
let src = ctx.create_buffer_source();
191+
let mut src = ctx.create_buffer_source();
192192
src.connect(&analyser);
193193
src.set_buffer(buffer);
194194
src.set_loop(true);

examples/audio_buffer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn main() {
4343
buffer.copy_to_channel(&sine, 0);
4444

4545
// play the buffer in a loop
46-
let src = context.create_buffer_source();
46+
let mut src = context.create_buffer_source();
4747
src.set_buffer(buffer.clone());
4848
src.set_loop(true);
4949
src.connect(&context.destination());

examples/benchmarks.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ fn main() {
9595
let name = "Simple source test without resampling (Mono)";
9696

9797
let context = OfflineAudioContext::new(1, DURATION * sample_rate as usize, sample_rate);
98-
let source = context.create_buffer_source();
98+
let mut source = context.create_buffer_source();
9999
let buf = get_buffer(&sources, sample_rate, 1);
100100
source.set_buffer(buf);
101101
source.set_loop(true);
@@ -109,7 +109,7 @@ fn main() {
109109
let name = "Simple source test without resampling (Stereo)";
110110

111111
let context = OfflineAudioContext::new(2, DURATION * sample_rate as usize, sample_rate);
112-
let source = context.create_buffer_source();
112+
let mut source = context.create_buffer_source();
113113
let buf = get_buffer(&sources, sample_rate, 2);
114114
source.set_buffer(buf);
115115
source.set_loop(true);
@@ -133,7 +133,7 @@ fn main() {
133133
panner.orientation_y().set_value(2.);
134134
panner.orientation_z().set_value(3.);
135135

136-
let source = context.create_buffer_source();
136+
let mut source = context.create_buffer_source();
137137
source.connect(&panner);
138138

139139
let buf = get_buffer(&sources, sample_rate, 2);
@@ -148,7 +148,7 @@ fn main() {
148148
let name = "Simple source test with resampling (Mono)";
149149

150150
let context = OfflineAudioContext::new(1, DURATION * sample_rate as usize, sample_rate);
151-
let source = context.create_buffer_source();
151+
let mut source = context.create_buffer_source();
152152
let buf = get_buffer(&sources, 38000., 1);
153153
source.set_buffer(buf);
154154
source.set_loop(true);
@@ -162,7 +162,7 @@ fn main() {
162162
let name = "Simple source test with resampling (Stereo)";
163163

164164
let context = OfflineAudioContext::new(2, DURATION * sample_rate as usize, sample_rate);
165-
let source = context.create_buffer_source();
165+
let mut source = context.create_buffer_source();
166166
let buf = get_buffer(&sources, 38000., 2);
167167
source.set_buffer(buf);
168168
source.set_loop(true);
@@ -186,7 +186,7 @@ fn main() {
186186
panner.orientation_y().set_value(2.);
187187
panner.orientation_z().set_value(3.);
188188

189-
let source = context.create_buffer_source();
189+
let mut source = context.create_buffer_source();
190190
source.connect(&panner);
191191

192192
let buf = get_buffer(&sources, 38000., 2);
@@ -201,7 +201,7 @@ fn main() {
201201
let name = "Upmix without resampling (Mono -> Stereo)";
202202

203203
let context = OfflineAudioContext::new(2, DURATION * sample_rate as usize, sample_rate);
204-
let source = context.create_buffer_source();
204+
let mut source = context.create_buffer_source();
205205
let buf = get_buffer(&sources, sample_rate, 1);
206206
source.set_buffer(buf);
207207
source.set_loop(true);
@@ -215,7 +215,7 @@ fn main() {
215215
let name = "Downmix without resampling (Stereo -> Mono)";
216216

217217
let context = OfflineAudioContext::new(1, DURATION * sample_rate as usize, sample_rate);
218-
let source = context.create_buffer_source();
218+
let mut source = context.create_buffer_source();
219219
let buf = get_buffer(&sources, sample_rate, 2);
220220
source.set_buffer(buf);
221221
source.set_loop(true);
@@ -233,7 +233,7 @@ fn main() {
233233
OfflineAudioContext::new(2, adjusted_duration * sample_rate as usize, sample_rate);
234234

235235
for _ in 0..100 {
236-
let source = context.create_buffer_source();
236+
let mut source = context.create_buffer_source();
237237
let buf = get_buffer(&sources, 38000., 1);
238238
source.set_buffer(buf);
239239
source.set_loop(true);
@@ -257,7 +257,7 @@ fn main() {
257257
let mut buffer = context.create_buffer(1, reference.length(), 38000.);
258258
buffer.copy_to_channel(channel_data, 0);
259259

260-
let source = context.create_buffer_source();
260+
let mut source = context.create_buffer_source();
261261
source.set_buffer(buffer);
262262
source.set_loop(true);
263263
source.connect(&context.destination());
@@ -288,7 +288,7 @@ fn main() {
288288
for _ in 0..2 {
289289
let buf = get_buffer(&sources, 38000., 1);
290290

291-
let source = context.create_buffer_source();
291+
let mut source = context.create_buffer_source();
292292
source.set_buffer(buf);
293293
source.set_loop(true);
294294
source.start();
@@ -339,7 +339,7 @@ fn main() {
339339
convolver.set_buffer(buffer);
340340
convolver.connect(&context.destination());
341341

342-
let source = context.create_buffer_source();
342+
let mut source = context.create_buffer_source();
343343
source.set_buffer(buf);
344344
source.set_loop(true);
345345
source.start();
@@ -512,7 +512,7 @@ fn main() {
512512
panner.connect(&context.destination());
513513
panner.pan().set_value(0.1);
514514

515-
let src = context.create_buffer_source();
515+
let mut src = context.create_buffer_source();
516516
let buffer = get_buffer(&sources, sample_rate, 2);
517517
src.connect(&panner);
518518
src.set_buffer(buffer);
@@ -532,7 +532,7 @@ fn main() {
532532
panner.pan().set_value_at_time(-1., 0.);
533533
panner.pan().set_value_at_time(0.2, 0.5);
534534

535-
let src = context.create_buffer_source();
535+
let mut src = context.create_buffer_source();
536536
let buffer = get_buffer(&sources, sample_rate, 2);
537537
src.connect(&panner);
538538
src.set_buffer(buffer);
@@ -567,7 +567,7 @@ fn main() {
567567
delay.delay_time().set_value(1.);
568568
delay.connect(&context.destination());
569569

570-
let source = context.create_buffer_source();
570+
let mut source = context.create_buffer_source();
571571
let buf = get_buffer(&sources, sample_rate, 2);
572572
source.set_buffer(buf);
573573
source.set_loop(true);
@@ -595,7 +595,7 @@ fn main() {
595595
let iir = context.create_iir_filter(feedforward, feedback);
596596
iir.connect(&context.destination());
597597

598-
let src = context.create_buffer_source();
598+
let mut src = context.create_buffer_source();
599599
let buffer = get_buffer(&sources, sample_rate, 2);
600600
src.connect(&iir);
601601
src.set_buffer(buffer);
@@ -615,7 +615,7 @@ fn main() {
615615
biquad.connect(&context.destination());
616616
biquad.frequency().set_value(200.);
617617

618-
let src = context.create_buffer_source();
618+
let mut src = context.create_buffer_source();
619619
let buffer = get_buffer(&sources, sample_rate, 2);
620620
src.connect(&biquad);
621621
src.set_buffer(buffer);

examples/biquad.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ fn main() {
4242
.exponential_ramp_to_value_at_time(10000., now + 10.);
4343

4444
// pipe the audio buffer source into the lowpass filter
45-
let src = context.create_buffer_source();
45+
let mut src = context.create_buffer_source();
4646
src.connect(&biquad);
4747
src.set_buffer(buffer);
4848
src.set_loop(true);

examples/doppler.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ fn main() {
4141
let file = File::open("samples/siren.mp3").unwrap();
4242
let buffer = context.decode_audio_data_sync(file).unwrap();
4343

44-
let src = context.create_buffer_source();
44+
let mut src = context.create_buffer_source();
4545
src.set_buffer(buffer);
4646
src.set_loop(true);
4747

examples/iir.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ fn main() {
4343
iir.connect(&context.destination());
4444

4545
// Play buffer and pipe to filter
46-
let src = context.create_buffer_source();
46+
let mut src = context.create_buffer_source();
4747
src.connect(&iir);
4848
src.set_buffer(buffer);
4949
src.set_loop(true);

examples/spatial.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ fn main() {
3636
// Create looping 'siren' sound
3737
let file = std::fs::File::open("samples/siren.mp3").unwrap();
3838
let buffer = context.decode_audio_data_sync(file).unwrap();
39-
let tone = context.create_buffer_source();
39+
let mut tone = context.create_buffer_source();
4040
tone.set_buffer(buffer);
4141
tone.set_loop(true);
4242
tone.start();

examples/trigger_soundfile.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ fn main() {
103103

104104
{
105105
println!("++ simple loop (x2)");
106-
let src = context.create_buffer_source();
106+
let mut src = context.create_buffer_source();
107107
src.set_buffer(audio_buffer.clone());
108108
src.connect(&context.destination());
109109
src.set_loop(true);
@@ -115,7 +115,7 @@ fn main() {
115115

116116
{
117117
println!("++ loop between 1 and 2 starting from 0");
118-
let src = context.create_buffer_source();
118+
let mut src = context.create_buffer_source();
119119
src.set_buffer(audio_buffer.clone());
120120
src.connect(&context.destination());
121121
src.set_loop(true);
@@ -131,7 +131,7 @@ fn main() {
131131

132132
{
133133
println!("++ loop backward between 1 and 2 starting from end");
134-
let src = context.create_buffer_source();
134+
let mut src = context.create_buffer_source();
135135
src.set_buffer(audio_buffer.clone());
136136
src.connect(&context.destination());
137137
src.playback_rate().set_value(-1.);

src/buffer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ pub struct AudioBufferOptions {
5353
/// buffer.copy_to_channel(&sine, 0);
5454
///
5555
/// // play the buffer in a loop
56-
/// let src = context.create_buffer_source();
56+
/// let mut src = context.create_buffer_source();
5757
/// src.set_buffer(buffer.clone());
5858
/// src.set_loop(true);
5959
/// src.connect(&context.destination());

0 commit comments

Comments
 (0)