54 return "card initialized";
56 return "card cleaned up";
58 return "card disconnected";
62 return "values changed";
99 event->signal = signal;
165 WARN(
"Audio handler already in the list");
170 return g_slist_append(list, handler);
182 WARN(
"Audio handler wasn't found in the list");
189 list = g_slist_remove_link(list, item);
238 DEBUG(
"** Dispatching signal '%s' from '%s', vol=%lg, has_mute=%s, muted=%s",
267 gint64 last, now, delay;
270 now = g_get_monotonic_time();
289 DEBUG(
"Discarding last timestamp, too old");
306 WARN(
"Unhandled alsa event: %d", event);
459 gdouble new_volume, gint dir)
468 DEBUG(
"Setting volume from %lg to %lg (dir: %d)",
469 cur_volume, new_volume, dir);
482 if (new_volume == cur_volume)
520 gdouble cur_volume, new_volume;
523 new_volume = cur_volume - scroll_step;
540 gdouble cur_volume, new_volume;
543 new_volume = cur_volume + scroll_step;
544 if (new_volume > 100)
560 DEBUG(
"Unhooking soundcard from the audio system");
582 GSList *card_list, *item;
596 DEBUG(
"Could not hook soundcard, trying every card available");
599 item = g_slist_find_custom(card_list,
audio->
card, (GCompareFunc) g_strcmp0);
601 DEBUG(
"Removing '%s' from card list", (
char *) item->data);
602 card_list = g_slist_remove(card_list, item);
603 g_slist_free_full(item, g_free);
607 for (item = card_list; item; item = item->next) {
608 const char *card = item->data;
620 g_slist_free_full(card_list, g_free);
630 if (soundcard == NULL) {
631 DEBUG(
"No soundcard could be hooked !");
642 DEBUG(
"Soundcard successfully hooked (scroll step: %lg, normalize: %s)",
void audio_raise_volume(Audio *audio, AudioUser user)
enum audio_signal AudioSignal
enum audio_user AudioUser
static void audio_hook_soundcard(Audio *audio)
gboolean alsa_card_has_mute(AlsaCard *card)
const char * audio_get_card(Audio *audio)
static GSList * audio_handler_list_remove(GSList *list, AudioHandler *handler)
gint64 last_action_timestamp
const char * alsa_card_get_channel(AlsaCard *card)
void audio_signals_disconnect(Audio *audio, AudioCallback callback, gpointer data)
static void audio_unhook_soundcard(Audio *audio)
gboolean audio_has_mute(Audio *audio)
gdouble alsa_card_get_volume(AlsaCard *card)
void audio_toggle_mute(Audio *audio, AudioUser user)
void audio_signals_connect(Audio *audio, AudioCallback callback, gpointer data)
gboolean audio_is_muted(Audio *audio)
static AudioHandler * audio_handler_new(AudioCallback callback, gpointer data)
GSList * alsa_list_cards(void)
static void on_alsa_event(enum alsa_event event, gpointer data)
gboolean prefs_get_boolean(const gchar *key, gboolean def)
const char * audio_get_channel(Audio *audio)
void alsa_card_toggle_mute(AlsaCard *card)
static void audio_event_free(AudioEvent *event)
GSList * audio_get_channel_list(const char *card_name)
void alsa_card_free(AlsaCard *card)
static AudioEvent * audio_event_new(Audio *audio, AudioSignal signal, AudioUser user)
gboolean alsa_card_is_muted(AlsaCard *card)
static void audio_handler_free(AudioHandler *handler)
gchar * prefs_get_channel(const gchar *card)
GSList * alsa_list_channels(const char *card_name)
static gint audio_handler_cmp(AudioHandler *h1, AudioHandler *h2)
gchar * prefs_get_string(const gchar *key, const gchar *def)
gdouble audio_get_volume(Audio *audio)
void(* AudioCallback)(Audio *audio, AudioEvent *event, gpointer data)
GSList * audio_get_card_list(void)
static const gchar * audio_user_to_str(AudioUser user)
AlsaCard * alsa_card_new(const char *card_name, const char *channel, gboolean normalize)
void alsa_card_set_volume(AlsaCard *card, gdouble value, int dir)
static GSList * audio_handler_list_append(GSList *list, AudioHandler *handler)
void audio_set_volume(Audio *audio, AudioUser user, gdouble new_volume, gint dir)
void alsa_card_install_callback(AlsaCard *card, AlsaCb callback, gpointer user_data)
static void invoke_handlers(Audio *audio, AudioSignal signal, AudioUser user)
void audio_free(Audio *audio)
void audio_reload(Audio *audio)
void audio_lower_volume(Audio *audio, AudioUser user)
const char * alsa_card_get_name(AlsaCard *card)
gdouble prefs_get_double(const gchar *key, gdouble def)
void _audio_set_volume(Audio *audio, AudioUser user, gdouble cur_volume, gdouble new_volume, gint dir)
static const gchar * audio_signal_to_str(AudioSignal signal)