Commit b8ccc885 authored by Max Kellermann's avatar Max Kellermann

volume: added PIPE_EVENT_MIXER

Flush the hardware volume cache, and send the MIXER idle event. This allows mixer plugins to detect volume changes.
parent 4e2fb3fb
......@@ -41,6 +41,9 @@ enum pipe_event {
/** SIGHUP received: reload configuration, roll log file */
PIPE_EVENT_RELOAD,
/** a hardware mixer plugin has detected a change */
PIPE_EVENT_MIXER,
PIPE_EVENT_MAX
};
......
......@@ -27,6 +27,7 @@
#include "mixer_control.h"
#include "mixer_all.h"
#include "mixer_type.h"
#include "event_pipe.h"
#include <glib.h>
......@@ -47,6 +48,19 @@ static int last_hardware_volume = -1;
/** the age of #last_hardware_volume */
static GTimer *hardware_volume_timer;
/**
* Handler for #PIPE_EVENT_MIXER.
*/
static void
mixer_event_callback(void)
{
/* flush the hardware volume cache */
last_hardware_volume = -1;
/* notify clients */
idle_add(IDLE_MIXER);
}
void volume_finish(void)
{
g_timer_destroy(hardware_volume_timer);
......@@ -55,6 +69,8 @@ void volume_finish(void)
void volume_init(void)
{
hardware_volume_timer = g_timer_new();
event_pipe_register(PIPE_EVENT_MIXER, mixer_event_callback);
}
int volume_level_get(void)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment