fix: make sure we don't start playing around sound if one is already playing

This commit is contained in:
Stevan Freeborn
2026-07-28 15:39:36 -05:00
parent b456397c30
commit 1344625fc9
+12 -4
View File
@@ -1,5 +1,6 @@
use std::sync::mpsc; use std::sync::atomic::{AtomicBool, Ordering};
use std::thread; use std::sync::{LazyLock, mpsc};
use std::time::Duration; use std::time::Duration;
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait}; use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
@@ -12,14 +13,21 @@ const NOTE_2_DURATION_SECS: f32 = 0.25;
const TOTAL_CHIME_DURATION_SECS: f32 = NOTE_1_DURATION_SECS + NOTE_2_DURATION_SECS; const TOTAL_CHIME_DURATION_SECS: f32 = NOTE_1_DURATION_SECS + NOTE_2_DURATION_SECS;
const CHIME_VOLUME_GAIN: f32 = 0.25; const CHIME_VOLUME_GAIN: f32 = 0.25;
static SOUND_BUSY: LazyLock<AtomicBool> = LazyLock::new(|| AtomicBool::new(false));
pub fn play_notification_sound() { pub fn play_notification_sound() {
thread::spawn(move || { if SOUND_BUSY.swap(true, Ordering::AcqRel) {
return;
}
std::thread::spawn(move || {
// term bell fall back // term bell fall back
print!("\x07"); print!("\x07");
let _ = std::io::Write::flush(&mut std::io::stdout()); let _ = std::io::Write::flush(&mut std::io::stdout());
let _ = play_audio_chime(); let _ = play_audio_chime();
SOUND_BUSY.store(false, Ordering::Release);
}); });
} }