@@ -104,23 +104,33 @@ impl Mixer for AlsaMixer {
104104
105105 let min_db = min_millibel. to_db ( ) as f64 ;
106106 let max_db = max_millibel. to_db ( ) as f64 ;
107- let mut db_range = f64:: abs ( max_db - min_db) ;
107+ let reported_db_range = f64:: abs ( max_db - min_db) ;
108108
109109 // Synchronize the volume control dB range with the mixer control,
110110 // unless it was already set with a command line option.
111- if !config. volume_ctrl . range_ok ( ) {
112- if db_range > 100.0 {
111+ let db_range = if config. volume_ctrl . range_ok ( ) {
112+ let db_range_override = config. volume_ctrl . db_range ( ) ;
113+ if db_range_override. is_normal ( ) {
114+ db_range_override
115+ } else {
116+ reported_db_range
117+ }
118+ } else {
119+ config. volume_ctrl . set_db_range ( reported_db_range) ;
120+ reported_db_range
121+ } ;
122+
123+ if reported_db_range == db_range {
124+ debug ! ( "Alsa dB volume range was reported as {}" , reported_db_range) ;
125+ if reported_db_range > 100.0 {
113126 debug ! ( "Alsa mixer reported dB range > 100, which is suspect" ) ;
114- warn ! ( "Please manually set `--volume-range` if this is incorrect" ) ;
127+ debug ! ( "Please manually set `--volume-range` if this is incorrect" ) ;
115128 }
116- config. volume_ctrl . set_db_range ( db_range) ;
117129 } else {
118- let db_range_override = config. volume_ctrl . db_range ( ) ;
119130 debug ! (
120- "Alsa dB volume range was detected as {} but overridden as {}" ,
121- db_range , db_range_override
131+ "Alsa dB volume range was reported as {} but overridden to {}" ,
132+ reported_db_range , db_range
122133 ) ;
123- db_range = db_range_override;
124134 }
125135
126136 // For hardware controls with a small range (24 dB or less),
0 commit comments