Mercurial > audlegacy
changeset 3899:2c768d923bcf
Add an event listener for volume changes.
author | William Pitcock <nenolod@atheme.org> |
---|---|
date | Tue, 06 Nov 2007 11:52:01 -0600 |
parents | 7f5a2fd9dcc0 |
children | 44ab3d6057da |
files | src/audacious/ui_main_evlisteners.c |
diffstat | 1 files changed, 27 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/audacious/ui_main_evlisteners.c Tue Nov 06 11:41:50 2007 -0600 +++ b/src/audacious/ui_main_evlisteners.c Tue Nov 06 11:52:01 2007 -0600 @@ -19,6 +19,8 @@ */ #include <glib.h> +#include <math.h> + #include "hook.h" #include "playback.h" #include "playlist.h" @@ -26,6 +28,7 @@ #include "playlist_evlisteners.h" #include "ui_main.h" +#include "ui_equalizer.h" #include "ui_skinned_textbox.h" #include "ui_playlist.h" @@ -45,9 +48,33 @@ mainwin_disable_seekbar(); } +static void +ui_main_evlistener_volume_change(gpointer hook_data, gpointer user_data) +{ + gint *h_vol = (gint *) hook_data; + gint vl, vr, b, v; + + vl = CLAMP(h_vol[0], 0, 100); + vr = CLAMP(h_vol[1], 0, 100); + v = MAX(vl, vr); + if (vl > vr) + b = (gint) rint(((gdouble) vr / vl) * 100) - 100; + else if (vl < vr) + b = 100 - (gint) rint(((gdouble) vl / vr) * 100); + else + b = 0; + + mainwin_set_volume_slider(v); + equalizerwin_set_volume_slider(v); + mainwin_set_balance_slider(b); + equalizerwin_set_balance_slider(b); +} + void ui_main_evlistener_init(void) { hook_associate("title change", ui_main_evlistener_title_change, NULL); hook_associate("hide seekbar", ui_main_evlistener_hide_seekbar, NULL); + hook_associate("volume set", ui_main_evlistener_volume_change, NULL); } +