diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/map-file | 1 | ||||
| -rw-r--r-- | src/pulse/volume.c | 10 | ||||
| -rw-r--r-- | src/pulse/volume.h | 4 | 
3 files changed, 12 insertions, 3 deletions
| diff --git a/src/map-file b/src/map-file index 50111224..1fffaff9 100644 --- a/src/map-file +++ b/src/map-file @@ -130,6 +130,7 @@ pa_cvolume_get_balance;  pa_cvolume_get_fade;  pa_cvolume_get_position;  pa_cvolume_inc; +pa_cvolume_inc_clamp;  pa_cvolume_init;  pa_cvolume_max;  pa_cvolume_max_mask; diff --git a/src/pulse/volume.c b/src/pulse/volume.c index 2d2bba25..59e9a189 100644 --- a/src/pulse/volume.c +++ b/src/pulse/volume.c @@ -885,7 +885,7 @@ pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvo      return dest;  } -pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc) { +pa_cvolume* pa_cvolume_inc_clamp(pa_cvolume *v, pa_volume_t inc, pa_volume_t limit) {      pa_volume_t m;      pa_assert(v); @@ -895,14 +895,18 @@ pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc) {      m = pa_cvolume_max(v); -    if (m >= PA_VOLUME_MAX - inc) -        m = PA_VOLUME_MAX; +    if (m >= limit - inc) +        m = limit;      else          m += inc;      return pa_cvolume_scale(v, m);  } +pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc){ +    return pa_cvolume_inc_clamp(v, inc, PA_VOLUME_MAX); +} +  pa_cvolume* pa_cvolume_dec(pa_cvolume *v, pa_volume_t dec) {      pa_volume_t m; diff --git a/src/pulse/volume.h b/src/pulse/volume.h index c964020a..ded4422e 100644 --- a/src/pulse/volume.h +++ b/src/pulse/volume.h @@ -348,6 +348,10 @@ pa_volume_t pa_cvolume_get_position(pa_cvolume *cv, const pa_channel_map *map, p   * and dest may point to the same structure. \since 0.9.16 */  pa_cvolume* pa_cvolume_merge(pa_cvolume *dest, const pa_cvolume *a, const pa_cvolume *b); +/** Increase the volume passed in by 'inc', but not exceeding 'limit'. + * The proportions between the channels are kept. \since 0.9.19 */ +pa_cvolume* pa_cvolume_inc_clamp(pa_cvolume *v, pa_volume_t inc, pa_volume_t limit); +  /** Increase the volume passed in by 'inc'. The proportions between   * the channels are kept. \since 0.9.16 */  pa_cvolume* pa_cvolume_inc(pa_cvolume *v, pa_volume_t inc); | 
