Update copyright notices.
[mpd-mk.git] / src / output_command.c
blob825884e8e3d65f31cfa77358283c9db49fdfd856
1 /*
2 * Copyright (C) 2003-2010 The Music Player Daemon Project
3 * http://www.musicpd.org
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 * Glue functions for controlling the audio outputs over the MPD
22 * protocol. These functions perform extra validation on all
23 * parameters, because they might be from an untrusted source.
27 #include "config.h"
28 #include "output_command.h"
29 #include "output_all.h"
30 #include "output_internal.h"
31 #include "output_plugin.h"
32 #include "mixer_control.h"
33 #include "player_control.h"
34 #include "idle.h"
36 extern unsigned audio_output_state_version;
38 bool
39 audio_output_enable_index(unsigned idx)
41 struct audio_output *ao;
43 if (idx >= audio_output_count())
44 return false;
46 ao = audio_output_get(idx);
47 if (ao->enabled)
48 return true;
50 ao->enabled = true;
51 idle_add(IDLE_OUTPUT);
53 pc_update_audio();
55 ++audio_output_state_version;
57 return true;
60 bool
61 audio_output_disable_index(unsigned idx)
63 struct audio_output *ao;
64 struct mixer *mixer;
66 if (idx >= audio_output_count())
67 return false;
69 ao = audio_output_get(idx);
70 if (!ao->enabled)
71 return true;
73 ao->enabled = false;
74 idle_add(IDLE_OUTPUT);
76 mixer = ao->mixer;
77 if (mixer != NULL) {
78 mixer_close(mixer);
79 idle_add(IDLE_MIXER);
82 pc_update_audio();
84 ++audio_output_state_version;
86 return true;