aboutsummaryrefslogtreecommitdiff
path: root/audio/audio_template.h
diff options
context:
space:
mode:
authormalc <av1474@comtv.ru>2009-05-14 03:11:35 +0400
committermalc <av1474@comtv.ru>2009-05-14 03:20:43 +0400
commit1a7dafce1dfc3dc2052d0c5d8397e72121291c57 (patch)
tree6b83da7787156494d16c58e2d5a41396a01a964f /audio/audio_template.h
parentb36aa85c7bef893bdad1f0646a2f6b3018eff0fb (diff)
Remove any pretense that there can be more than one AudioState
Diffstat (limited to 'audio/audio_template.h')
-rw-r--r--audio/audio_template.h68
1 files changed, 31 insertions, 37 deletions
diff --git a/audio/audio_template.h b/audio/audio_template.h
index 369ed3b9e5..0ffca652f5 100644
--- a/audio/audio_template.h
+++ b/audio/audio_template.h
@@ -36,11 +36,9 @@
#define HWBUF hw->conv_buf
#endif
-static void glue (audio_init_nb_voices_, TYPE) (
- AudioState *s,
- struct audio_driver *drv
- )
+static void glue (audio_init_nb_voices_, TYPE) (struct audio_driver *drv)
{
+ AudioState *s = &glob_audio_state;
int max_voices = glue (drv->max_voices_, TYPE);
int voice_size = glue (drv->voice_size_, TYPE);
@@ -194,8 +192,9 @@ static void glue (audio_pcm_hw_del_sw_, TYPE) (SW *sw)
LIST_REMOVE (sw, entries);
}
-static void glue (audio_pcm_hw_gc_, TYPE) (AudioState *s, HW **hwp)
+static void glue (audio_pcm_hw_gc_, TYPE) (HW **hwp)
{
+ AudioState *s = &glob_audio_state;
HW *hw = *hwp;
if (!hw->sw_head.lh_first) {
@@ -211,14 +210,15 @@ static void glue (audio_pcm_hw_gc_, TYPE) (AudioState *s, HW **hwp)
}
}
-static HW *glue (audio_pcm_hw_find_any_, TYPE) (AudioState *s, HW *hw)
+static HW *glue (audio_pcm_hw_find_any_, TYPE) (HW *hw)
{
- return hw ? hw->entries.le_next : s->glue (hw_head_, TYPE).lh_first;
+ AudioState *s = &glob_audio_state;
+ return hw ? hw->entries.le_next : glue (s->hw_head_, TYPE).lh_first;
}
-static HW *glue (audio_pcm_hw_find_any_enabled_, TYPE) (AudioState *s, HW *hw)
+static HW *glue (audio_pcm_hw_find_any_enabled_, TYPE) (HW *hw)
{
- while ((hw = glue (audio_pcm_hw_find_any_, TYPE) (s, hw))) {
+ while ((hw = glue (audio_pcm_hw_find_any_, TYPE) (hw))) {
if (hw->enabled) {
return hw;
}
@@ -227,12 +227,11 @@ static HW *glue (audio_pcm_hw_find_any_enabled_, TYPE) (AudioState *s, HW *hw)
}
static HW *glue (audio_pcm_hw_find_specific_, TYPE) (
- AudioState *s,
HW *hw,
struct audsettings *as
)
{
- while ((hw = glue (audio_pcm_hw_find_any_, TYPE) (s, hw))) {
+ while ((hw = glue (audio_pcm_hw_find_any_, TYPE) (hw))) {
if (audio_pcm_info_eq (&hw->info, as)) {
return hw;
}
@@ -240,10 +239,10 @@ static HW *glue (audio_pcm_hw_find_specific_, TYPE) (
return NULL;
}
-static HW *glue (audio_pcm_hw_add_new_, TYPE) (AudioState *s,
- struct audsettings *as)
+static HW *glue (audio_pcm_hw_add_new_, TYPE) (struct audsettings *as)
{
HW *hw;
+ AudioState *s = &glob_audio_state;
struct audio_driver *drv = s->drv;
if (!glue (s->nb_hw_voices_, TYPE)) {
@@ -298,7 +297,7 @@ static HW *glue (audio_pcm_hw_add_new_, TYPE) (AudioState *s,
LIST_INSERT_HEAD (&s->glue (hw_head_, TYPE), hw, entries);
glue (s->nb_hw_voices_, TYPE) -= 1;
#ifdef DAC
- audio_attach_capture (s, hw);
+ audio_attach_capture (hw);
#endif
return hw;
@@ -309,33 +308,31 @@ static HW *glue (audio_pcm_hw_add_new_, TYPE) (AudioState *s,
return NULL;
}
-static HW *glue (audio_pcm_hw_add_, TYPE) (AudioState *s,
- struct audsettings *as)
+static HW *glue (audio_pcm_hw_add_, TYPE) (struct audsettings *as)
{
HW *hw;
if (glue (conf.fixed_, TYPE).enabled && glue (conf.fixed_, TYPE).greedy) {
- hw = glue (audio_pcm_hw_add_new_, TYPE) (s, as);
+ hw = glue (audio_pcm_hw_add_new_, TYPE) (as);
if (hw) {
return hw;
}
}
- hw = glue (audio_pcm_hw_find_specific_, TYPE) (s, NULL, as);
+ hw = glue (audio_pcm_hw_find_specific_, TYPE) (NULL, as);
if (hw) {
return hw;
}
- hw = glue (audio_pcm_hw_add_new_, TYPE) (s, as);
+ hw = glue (audio_pcm_hw_add_new_, TYPE) (as);
if (hw) {
return hw;
}
- return glue (audio_pcm_hw_find_any_, TYPE) (s, NULL);
+ return glue (audio_pcm_hw_find_any_, TYPE) (NULL);
}
static SW *glue (audio_pcm_create_voice_pair_, TYPE) (
- AudioState *s,
const char *sw_name,
struct audsettings *as
)
@@ -358,7 +355,7 @@ static SW *glue (audio_pcm_create_voice_pair_, TYPE) (
goto err1;
}
- hw = glue (audio_pcm_hw_add_, TYPE) (s, &hw_as);
+ hw = glue (audio_pcm_hw_add_, TYPE) (&hw_as);
if (!hw) {
goto err2;
}
@@ -373,31 +370,30 @@ static SW *glue (audio_pcm_create_voice_pair_, TYPE) (
err3:
glue (audio_pcm_hw_del_sw_, TYPE) (sw);
- glue (audio_pcm_hw_gc_, TYPE) (s, &hw);
+ glue (audio_pcm_hw_gc_, TYPE) (&hw);
err2:
qemu_free (sw);
err1:
return NULL;
}
-static void glue (audio_close_, TYPE) (AudioState *s, SW *sw)
+static void glue (audio_close_, TYPE) (SW *sw)
{
glue (audio_pcm_sw_fini_, TYPE) (sw);
glue (audio_pcm_hw_del_sw_, TYPE) (sw);
- glue (audio_pcm_hw_gc_, TYPE) (s, &sw->hw);
+ glue (audio_pcm_hw_gc_, TYPE) (&sw->hw);
qemu_free (sw);
}
void glue (AUD_close_, TYPE) (QEMUSoundCard *card, SW *sw)
{
if (sw) {
- if (audio_bug (AUDIO_FUNC, !card || !card->audio)) {
- dolog ("card=%p card->audio=%p\n",
- card, card ? card->audio : NULL);
+ if (audio_bug (AUDIO_FUNC, !card)) {
+ dolog ("card=%p\n", card);
return;
}
- glue (audio_close_, TYPE) (card->audio, sw);
+ glue (audio_close_, TYPE) (sw);
}
}
@@ -410,7 +406,7 @@ SW *glue (AUD_open_, TYPE) (
struct audsettings *as
)
{
- AudioState *s;
+ AudioState *s = &glob_audio_state;
#ifdef DAC
int live = 0;
SW *old_sw = NULL;
@@ -419,15 +415,12 @@ SW *glue (AUD_open_, TYPE) (
ldebug ("open %s, freq %d, nchannels %d, fmt %d\n",
name, as->freq, as->nchannels, as->fmt);
- if (audio_bug (AUDIO_FUNC,
- !card || !card->audio || !name || !callback_fn || !as)) {
- dolog ("card=%p card->audio=%p name=%p callback_fn=%p as=%p\n",
- card, card ? card->audio : NULL, name, callback_fn, as);
+ if (audio_bug (AUDIO_FUNC, !card || !name || !callback_fn || !as)) {
+ dolog ("card=%p name=%p callback_fn=%p as=%p\n",
+ card, name, callback_fn, as);
goto fail;
}
- s = card->audio;
-
if (audio_bug (AUDIO_FUNC, audio_validate_settings (as))) {
audio_print_settings (as);
goto fail;
@@ -485,7 +478,7 @@ SW *glue (AUD_open_, TYPE) (
}
}
else {
- sw = glue (audio_pcm_create_voice_pair_, TYPE) (s, name, as);
+ sw = glue (audio_pcm_create_voice_pair_, TYPE) (name, as);
if (!sw) {
dolog ("Failed to create voice `%s'\n", name);
return NULL;
@@ -493,6 +486,7 @@ SW *glue (AUD_open_, TYPE) (
}
if (sw) {
+ sw->card = card;
sw->vol = nominal_volume;
sw->callback.fn = callback_fn;
sw->callback.opaque = callback_opaque;