volume: added PIPE_EVENT_MIXER
Flush the hardware volume cache, and send the MIXER idle event. This allows mixer plugins to detect volume changes.
This commit is contained in:
parent
4e2fb3fb89
commit
b8ccc885c8
@ -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
|
||||||
};
|
};
|
||||||
|
|
||||||
|
16
src/volume.c
16
src/volume.c
@ -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;
|
|||||||
/** 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)
|
|||||||
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)
|
||||||
|
Loading…
Reference in New Issue
Block a user