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 { ...@@ -41,6 +41,9 @@ enum pipe_event {
/** SIGHUP received: reload configuration, roll log file */ /** SIGHUP received: reload configuration, roll log file */
PIPE_EVENT_RELOAD, PIPE_EVENT_RELOAD,
/** a hardware mixer plugin has detected a change */
PIPE_EVENT_MIXER,
PIPE_EVENT_MAX PIPE_EVENT_MAX
}; };
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "mixer_control.h" #include "mixer_control.h"
#include "mixer_all.h" #include "mixer_all.h"
#include "mixer_type.h" #include "mixer_type.h"
#include "event_pipe.h"
#include <glib.h> #include <glib.h>
...@@ -47,6 +48,19 @@ static int last_hardware_volume = -1; ...@@ -47,6 +48,19 @@ static int last_hardware_volume = -1;
/** the age of #last_hardware_volume */ /** the age of #last_hardware_volume */
static GTimer *hardware_volume_timer; 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) void volume_finish(void)
{ {
g_timer_destroy(hardware_volume_timer); g_timer_destroy(hardware_volume_timer);
...@@ -55,6 +69,8 @@ void volume_finish(void) ...@@ -55,6 +69,8 @@ void volume_finish(void)
void volume_init(void) void volume_init(void)
{ {
hardware_volume_timer = g_timer_new(); hardware_volume_timer = g_timer_new();
event_pipe_register(PIPE_EVENT_MIXER, mixer_event_callback);
} }
int volume_level_get(void) 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