Skip to content

Commit 781e322

Browse files
chore: Utilize LazyLock instead of OnceLock for fft calculations
1 parent 1315d77 commit 781e322

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

core/src/avm2/globals/flash/media/sound_mixer.rs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ use crate::avm2::value::Value;
66
use crate::avm2::Error;
77
use crate::avm2_stub_getter;
88
use crate::display_object::SoundTransform;
9-
use std::sync::{Arc, OnceLock};
9+
use std::{
10+
ops::Deref,
11+
sync::{Arc, LazyLock},
12+
};
1013

1114
/// Implements `soundTransform`'s getter
1215
///
@@ -107,11 +110,11 @@ pub fn compute_spectrum<'gc>(
107110
};
108111

109112
if fft {
110-
// TODO: Use `std::sync::LazyLock` once it's stabilized?
111-
static FFT: OnceLock<Arc<dyn realfft::RealToComplex<f32>>> = OnceLock::new();
113+
static FFT: LazyLock<Arc<dyn realfft::RealToComplex<f32>>> =
114+
LazyLock::new(|| realfft::RealFftPlanner::new().plan_fft_forward(2048));
112115

113116
// Flash Player appears to do a 2048-long FFT with only the first 512 samples filled in...
114-
let fft = FFT.get_or_init(|| realfft::RealFftPlanner::new().plan_fft_forward(2048));
117+
let fft = FFT.deref();
115118

116119
let mut in_left = fft.make_input_vec();
117120
let mut in_right = fft.make_input_vec();

0 commit comments

Comments
 (0)