diff --git a/crates/kira/Cargo.toml b/crates/kira/Cargo.toml index b7c0e4bb..6106a47e 100644 --- a/crates/kira/Cargo.toml +++ b/crates/kira/Cargo.toml @@ -33,6 +33,9 @@ features = ["wasm-bindgen"] [target.'cfg(target_arch = "wasm32")'.dependencies] send_wrapper = "0.6.0" +[target.'cfg(not(target_has_atomic = "64"))'.dependencies] +portable-atomic = "1" + [features] default = ["cpal", "mp3", "ogg", "flac", "wav"] mp3 = ["symphonia", "symphonia/mp3"] diff --git a/crates/kira/src/backend/cpal/desktop/stream_manager.rs b/crates/kira/src/backend/cpal/desktop/stream_manager.rs index 14ca03f1..a4c66f30 100644 --- a/crates/kira/src/backend/cpal/desktop/stream_manager.rs +++ b/crates/kira/src/backend/cpal/desktop/stream_manager.rs @@ -3,11 +3,16 @@ mod send_on_drop; use std::{ sync::{ Arc, Mutex, - atomic::{AtomicBool, AtomicU64, Ordering}, + atomic::{AtomicBool, Ordering}, }, time::Duration, }; +#[cfg(target_has_atomic = "64")] +use std::sync::atomic::AtomicU64; +#[cfg(not(target_has_atomic = "64"))] +use portable_atomic::AtomicU64; + use super::renderer_with_cpu_usage::RendererWithCpuUsage; use cpal::{ BufferSize, Device, Stream, StreamConfig, StreamError, diff --git a/crates/kira/src/clock.rs b/crates/kira/src/clock.rs index 4972f1ce..8c33a5ba 100644 --- a/crates/kira/src/clock.rs +++ b/crates/kira/src/clock.rs @@ -149,9 +149,14 @@ pub use time::*; use std::sync::{ Arc, - atomic::{AtomicBool, AtomicU64, Ordering}, + atomic::{AtomicBool, Ordering}, }; +#[cfg(target_has_atomic = "64")] +use std::sync::atomic::AtomicU64; +#[cfg(not(target_has_atomic = "64"))] +use portable_atomic::AtomicU64; + use crate::{ Parameter, Value, command::{ValueChangeCommand, read_commands_into_parameters}, diff --git a/crates/kira/src/sound/static_sound/sound.rs b/crates/kira/src/sound/static_sound/sound.rs index 4c1e3d69..4773c66c 100644 --- a/crates/kira/src/sound/static_sound/sound.rs +++ b/crates/kira/src/sound/static_sound/sound.rs @@ -5,9 +5,14 @@ mod test; use std::sync::{ Arc, - atomic::{AtomicU8, AtomicU64, Ordering}, + atomic::{AtomicU8, Ordering}, }; +#[cfg(target_has_atomic = "64")] +use std::sync::atomic::AtomicU64; +#[cfg(not(target_has_atomic = "64"))] +use portable_atomic::AtomicU64; + use crate::{ Decibels, Panning, Parameter, PlaybackRate, StartTime, Tween, command::read_commands_into_parameters, diff --git a/crates/kira/src/sound/streaming/sound.rs b/crates/kira/src/sound/streaming/sound.rs index bc44b998..cb859117 100644 --- a/crates/kira/src/sound/streaming/sound.rs +++ b/crates/kira/src/sound/streaming/sound.rs @@ -5,9 +5,14 @@ mod test; use std::sync::{ Arc, - atomic::{AtomicBool, AtomicU8, AtomicU64, Ordering}, + atomic::{AtomicBool, AtomicU8, Ordering}, }; +#[cfg(target_has_atomic = "64")] +use std::sync::atomic::AtomicU64; +#[cfg(not(target_has_atomic = "64"))] +use portable_atomic::AtomicU64; + use crate::{ Decibels, Panning, Parameter, PlaybackRate, StartTime, Tween, command::read_commands_into_parameters,