diff options
author | ben <benjaminfranzke@googlemail.com> | 2010-07-13 16:28:36 +0200 |
---|---|---|
committer | ben <benjaminfranzke@googlemail.com> | 2010-07-13 16:28:36 +0200 |
commit | 803b7b24229c42cd9d5eee8c1da166382a321d5c (patch) | |
tree | 14a9c3f52e3134ff7a57deef85f504f106e140fb /src/interface.c | |
parent | 54c748fc6c1ceb0e3602482ab29f1e4e523d0b77 (diff) | |
download | pa-sink-ctl-803b7b24229c42cd9d5eee8c1da166382a321d5c.tar.gz pa-sink-ctl-803b7b24229c42cd9d5eee8c1da166382a321d5c.tar.bz2 pa-sink-ctl-803b7b24229c42cd9d5eee8c1da166382a321d5c.zip |
sink_inputs volume made changable
Diffstat (limited to 'src/interface.c')
-rw-r--r-- | src/interface.c | 26 |
1 files changed, 24 insertions, 2 deletions
diff --git a/src/interface.c b/src/interface.c index 5492fbf..f46f6dc 100644 --- a/src/interface.c +++ b/src/interface.c @@ -149,6 +149,8 @@ void get_input(void) int c; // uint32_t sink; c = wgetch(menu_win); + int volume_mult = 0; + switch (c) { case KEY_UP: if (chooser_input == -1 && chooser_sink > 0) { @@ -170,9 +172,29 @@ void get_input(void) break; case KEY_LEFT: - break; - + volume_mult = -1; case KEY_RIGHT: + if (volume_mult == 0) + volume_mult = 1; + if (chooser_input == -1) + break; + sink_input_info *input = sink_list[chooser_sink]->input_list[chooser_input]; + pa_cvolume volume; + volume.channels = input->channels; + + int input_vol = input->vol + 2 * volume_mult * (VOLUME_MAX / 100); +#define CHECK_MIN_MAX(val, min, max) ((val) > (max) ? (max) : ((val) < (min) ? (min) : (val))) + pa_volume_t new_vol = CHECK_MIN_MAX(input_vol, 0, VOLUME_MAX); +#undef CHECK_MIN_MAX + for (int i = 0; i < volume.channels; ++i) + volume.values[i] = new_vol; + + pa_operation_unref(pa_context_set_sink_input_volume(context, + input->index, + &volume, + change_callback, + NULL)); + return; break; case 32: |