diff options
| author | Gustav Sörnäs <gustav@sornas.net> | 2021-01-03 19:10:15 +0100 |
|---|---|---|
| committer | Gustav Sörnäs <gustav@sornas.net> | 2021-01-03 19:10:15 +0100 |
| commit | 3e9b55d70301cdb322a1d2aa2fb599b55521621d (patch) | |
| tree | 6da9499042b144d47f13de5ffbba3b4faebba403 /mumd/src | |
| parent | e23509097b904dcd134a2b54babe85eb16aedd52 (diff) | |
| download | mum-3e9b55d70301cdb322a1d2aa2fb599b55521621d.tar.gz | |
cow
moo
Diffstat (limited to 'mumd/src')
| -rw-r--r-- | mumd/src/audio.rs | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/mumd/src/audio.rs b/mumd/src/audio.rs index 08a4b48..0e53a63 100644 --- a/mumd/src/audio.rs +++ b/mumd/src/audio.rs @@ -11,7 +11,7 @@ use log::*; use mumble_protocol::voice::VoicePacketPayload; use mumlib::config::SoundEffect; use opus::Channels; -use std::{collections::hash_map::Entry, fs::File, io::Read}; +use std::{borrow::Cow, collections::hash_map::Entry, fs::File, io::Read}; use std::collections::{HashMap, VecDeque}; use std::sync::{Arc, Mutex}; use strum::IntoEnumIterator; @@ -233,11 +233,11 @@ impl Audio { self.sounds = NotificationEvents::iter() .map(|event| { - let bytes = overrides.get(&event) + let bytes_cow = overrides.get(&event) .map(|file| get_resource(file)) .flatten() - .map(|byte_vec| &*byte_vec.leak()) - .unwrap_or(include_bytes!("fallback_sfx.wav")); + .unwrap_or(Cow::from(include_bytes!("fallback_sfx.wav").as_ref())); + let bytes = bytes_cow.as_ref(); let reader = hound::WavReader::new(bytes).unwrap(); let spec = reader.spec(); let samples = match spec.sample_format { @@ -369,13 +369,14 @@ impl Audio { } } -fn get_resource(file: &str) -> Option<Vec<u8>> { +// moo +fn get_resource(file: &str) -> Option<Cow<[u8]>> { let mut buf: Vec<u8> = Vec::new(); if let Ok(mut file) = File::open(file) .or_else(|_| File::open(format!("/home/gustav/dev/mum/mumd/src/resources/{}", file))) { file.read_to_end(&mut buf).unwrap(); - Some(buf) + Some(Cow::from(buf)) } else { None } |
