mirror of
https://github.com/librespot-org/librespot.git
synced 2025-10-03 17:59:24 +02:00
Cache volume across restarts (#220)
* create Volume struct for use with Cache * add "volume" file to Cache * load cached volume on start, intial overrides cached overrides default * amend volume_to_mixer function to cache the volume on every change * pass cache to Spirc and SpircTask so volume_to_mixer has access * rustfmt changes * revert volume_to_mixer function and Spirc/SpircTask cache variable * Volume implements Copy, pass by value instead of reference * clamp volume to 100 if cached value exceeds limit * convert Volume to u16 internally, use float and round to convert hex->dec * convert initial_volume and ConnectConfig.volume to u16 as well * add cache_volume function to SpircTask * remove conversion to/from percentage on cached volume * consolidate device.set_volume, mixer.set_volume, and caching * streamline intial volume logic
This commit is contained in:
parent
21f1ccfb5a
commit
d40c0f50db
8 changed files with 84 additions and 26 deletions
|
@ -7,6 +7,7 @@ use std::path::PathBuf;
|
|||
|
||||
use authentication::Credentials;
|
||||
use spotify_id::FileId;
|
||||
use volume::Volume;
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct Cache {
|
||||
|
@ -52,6 +53,23 @@ impl Cache {
|
|||
}
|
||||
}
|
||||
|
||||
// cache volume to root/volume
|
||||
impl Cache {
|
||||
fn volume_path(&self) -> PathBuf {
|
||||
self.root.join("volume")
|
||||
}
|
||||
|
||||
pub fn volume(&self) -> Option<u16> {
|
||||
let path = self.volume_path();
|
||||
Volume::from_file(path)
|
||||
}
|
||||
|
||||
pub fn save_volume(&self, volume: Volume) {
|
||||
let path = self.volume_path();
|
||||
volume.save_to_file(&path);
|
||||
}
|
||||
}
|
||||
|
||||
impl Cache {
|
||||
fn file_path(&self, file: FileId) -> PathBuf {
|
||||
let name = file.to_base16();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue