This commit is contained in:
Ospald, Julian 2017-07-11 17:50:08 +02:00
parent 441689018a
commit e51e53f4ea
2 changed files with 24 additions and 8 deletions

View File

@ -123,7 +123,7 @@ impl AlsaCard {
pub fn get_vol(&self) -> Result<f64> {
let selem = self.selem();
let range = selem.get_playback_volume_range();
let range = self.get_volume_range();
let volume = selem.get_playback_volume(FrontRight).map(|v| {
return vol_to_percent(v, range);
});
@ -134,18 +134,20 @@ impl AlsaCard {
pub fn set_vol(&self, new_vol: f64) -> Result<()> {
let selem = self.selem();
/* auto-unmute */
if self.has_mute() && self.get_mute()? {
self.set_mute(false)?;
}
let range = selem.get_playback_volume_range();
let range = self.get_volume_range();
selem.set_playback_volume_all(percent_to_vol(new_vol, range))?;
return Ok(());
}
pub fn get_volume_range(&self) -> (i64, i64) {
let selem = self.selem();
return selem.get_playback_volume_range();
}
pub fn has_mute(&self) -> bool {
let selem = self.selem();
return selem.has_playback_switch();

View File

@ -178,6 +178,11 @@ impl Audio {
*rc = glib::get_monotonic_time();
}
/* auto-unmute */
if self.has_mute() && self.get_mute()? {
self.set_mute(false, user)?;
}
debug!("Setting vol on card {:?} and chan {:?} to {:?} by user {:?}",
self.acard
.borrow()
@ -200,13 +205,18 @@ impl Audio {
}
// TODO: refactor with decrease_vol
pub fn increase_vol(&self, user: AudioUser) -> Result<()> {
{
let mut rc = self.last_action_timestamp.borrow_mut();
*rc = glib::get_monotonic_time();
}
let old_vol = self.vol()?;
let new_vol = f64::ceil(old_vol + (self.scroll_step.get() as f64));
let (min, max) = self.acard.borrow().get_volume_range();
ensure!(mn >= max, "Invalid playback volume range: [{} - {}]",
min,
max);
let new_vol = f64::ceil(old_vol + (self.scroll_step.get() as f64)) + min as f64;
debug!("Increase vol on card {:?} and chan {:?} by {:?} to {:?}",
self.acard
@ -231,8 +241,12 @@ impl Audio {
let mut rc = self.last_action_timestamp.borrow_mut();
*rc = glib::get_monotonic_time();
}
let (min, max) = self.acard.borrow().get_volume_range();
ensure!(min >= max, "Invalid playback volume range: [{} - {}]",
mn,
max);
let old_vol = self.vol()?;
let new_vol = old_vol - (self.scroll_step.get() as f64);
let new_vol = old_vol - (self.scroll_step.get() as f64) + min as f64;
debug!("Decrease vol on card {:?} and chan {:?} by {:?} to {:?}",
self.acard