# HG changeset patch # User William Pitcock # Date 1194371521 21600 # Node ID 2c768d923bcfcf421beaf8c50d6bcbb7177f994c # Parent 7f5a2fd9dcc056c7038e5103b588e2884e364b46 Add an event listener for volume changes. diff -r 7f5a2fd9dcc0 -r 2c768d923bcf src/audacious/ui_main_evlisteners.c --- 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 +#include + #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); } +