summaryrefslogtreecommitdiffstats
path: root/libao2/ao_pulse.c
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-12-18 20:22:39 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2009-12-18 20:22:39 +0000
commite858d98f4f6980cb07cae6166d3f85ba86a46963 (patch)
treef402e3bed4c9bf5e78ca7a346efbf6fa803c065e /libao2/ao_pulse.c
parent2ed18d7a2a08519f5ac7121c68289d0d4dd17e78 (diff)
downloadmpv-e858d98f4f6980cb07cae6166d3f85ba86a46963.tar.bz2
mpv-e858d98f4f6980cb07cae6166d3f85ba86a46963.tar.xz
Get rid of global volume variable, it is only used for temporary values.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@30060 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2/ao_pulse.c')
-rw-r--r--libao2/ao_pulse.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/libao2/ao_pulse.c b/libao2/ao_pulse.c
index b2fdcbb175..f113548c1e 100644
--- a/libao2/ao_pulse.c
+++ b/libao2/ao_pulse.c
@@ -49,9 +49,6 @@ static struct pa_context *context;
/** Main event loop object */
static struct pa_threaded_mainloop *mainloop;
-/** A temporary variable to store the current volume */
-static pa_cvolume volume;
-
static int broken_pause;
LIBAO_EXTERN(pulse)
@@ -144,6 +141,7 @@ static int init(int rate_hz, int channels, int format, int flags) {
char *host = NULL;
char *sink = NULL;
char *version = pa_get_library_version();
+ struct pa_cvolume volume;
if (ao_subdevice) {
devarg = strdup(ao_subdevice);
@@ -350,13 +348,14 @@ static float get_delay(void) {
* pa_context_get_sink_input_info() operation completes. Saves the
* volume field of the specified structure to the global variable volume. */
static void info_func(struct pa_context *c, const struct pa_sink_input_info *i, int is_last, void *userdata) {
+ struct pa_cvolume *volume = userdata;
if (is_last < 0) {
GENERIC_ERR_MSG(context, "Failed to get sink input info");
return;
}
if (!i)
return;
- volume = i->volume;
+ *volume = i->volume;
pa_threaded_mainloop_signal(mainloop, 0);
}
@@ -365,8 +364,9 @@ static int control(int cmd, void *arg) {
case AOCONTROL_GET_VOLUME: {
ao_control_vol_t *vol = arg;
uint32_t devidx = pa_stream_get_index(stream);
+ struct pa_cvolume volume;
pa_threaded_mainloop_lock(mainloop);
- if (!waitop(pa_context_get_sink_input_info(context, devidx, info_func, NULL))) {
+ if (!waitop(pa_context_get_sink_input_info(context, devidx, info_func, &volume))) {
GENERIC_ERR_MSG(context, "pa_stream_get_sink_input_info() failed");
return CONTROL_ERROR;
}
@@ -384,7 +384,9 @@ static int control(int cmd, void *arg) {
case AOCONTROL_SET_VOLUME: {
const ao_control_vol_t *vol = arg;
pa_operation *o;
+ struct pa_cvolume volume;
+ pa_cvolume_reset(&volume, ao_data.channels);
if (volume.channels != 2)
pa_cvolume_set(&volume, volume.channels, (pa_volume_t)vol->left*PA_VOLUME_NORM/100);
else {