aboutsummaryrefslogtreecommitdiff
path: root/src/mixer
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2009-01-25 17:38:12 +0100
committerMax Kellermann <max@duempel.org>2009-01-25 17:38:12 +0100
commitdc575106c296435940482cc2655804c71ee2d934 (patch)
tree4c5a455e28a224fdab697c4b00f34305b2e67281 /src/mixer
parentdb2058a26580681911aed09b427472ccde0176dd (diff)
mixer: merged methods "init" and "configure"
Both methods are always called together. There is no point in having them separate. This simplifies the code, because the old configure() method could be called more than once, and had to free old allocations.
Diffstat (limited to 'src/mixer')
-rw-r--r--src/mixer/alsa_mixer.c29
-rw-r--r--src/mixer/oss_mixer.c29
2 files changed, 12 insertions, 46 deletions
diff --git a/src/mixer/alsa_mixer.c b/src/mixer/alsa_mixer.c
index f3213c4c..95e5c70e 100644
--- a/src/mixer/alsa_mixer.c
+++ b/src/mixer/alsa_mixer.c
@@ -36,16 +36,19 @@ struct alsa_mixer {
};
static struct mixer_data *
-alsa_mixer_init(void)
+alsa_mixer_init(const struct config_param *param)
{
struct alsa_mixer *am = g_malloc(sizeof(struct alsa_mixer));
- am->device = NULL;
- am->control = NULL;
+
+ am->device = config_dup_block_string(param, "mixer_device", NULL);
+ am->control = config_dup_block_string(param, "mixer_control", NULL);
+
am->handle = NULL;
am->elem = NULL;
am->volume_min = 0;
am->volume_max = 0;
am->volume_set = -1;
+
return (struct mixer_data *)am;
}
@@ -60,25 +63,6 @@ alsa_mixer_finish(struct mixer_data *data)
}
static void
-alsa_mixer_configure(struct mixer_data *data, const struct config_param *param)
-{
- struct alsa_mixer *am = (struct alsa_mixer *)data;
- const char *value;
-
- value = config_get_block_string(param, "mixer_device", NULL);
- if (value != NULL) {
- g_free(am->device);
- am->device = g_strdup(value);
- }
-
- value = config_get_block_string(param, "mixer_control", NULL);
- if (value != NULL) {
- g_free(am->control);
- am->control = g_strdup(value);
- }
-}
-
-static void
alsa_mixer_close(struct mixer_data *data)
{
struct alsa_mixer *am = (struct alsa_mixer *)data;
@@ -235,7 +219,6 @@ alsa_mixer_control(struct mixer_data *data, int cmd, void *arg)
const struct mixer_plugin alsa_mixer = {
.init = alsa_mixer_init,
.finish = alsa_mixer_finish,
- .configure = alsa_mixer_configure,
.open = alsa_mixer_open,
.control = alsa_mixer_control,
.close = alsa_mixer_close
diff --git a/src/mixer/oss_mixer.c b/src/mixer/oss_mixer.c
index 504fedc6..26161674 100644
--- a/src/mixer/oss_mixer.c
+++ b/src/mixer/oss_mixer.c
@@ -43,13 +43,16 @@ struct oss_mixer {
};
static struct mixer_data *
-oss_mixer_init(void)
+oss_mixer_init(const struct config_param *param)
{
struct oss_mixer *om = g_malloc(sizeof(struct oss_mixer));
- om->device = NULL;
- om->control = NULL;
+
+ om->device = config_dup_block_string(param, "mixer_device", NULL);
+ om->control = config_dup_block_string(param, "mixer_control", NULL);
+
om->device_fd = -1;
om->volume_control = SOUND_MIXER_PCM;
+
return (struct mixer_data *)om;
}
@@ -64,25 +67,6 @@ oss_mixer_finish(struct mixer_data *data)
}
static void
-oss_mixer_configure(struct mixer_data *data, const struct config_param *param)
-{
- struct oss_mixer *om = (struct oss_mixer *) data;
- const char *value;
-
- value = config_get_block_string(param, "mixer_device", NULL);
- if (value != NULL) {
- g_free(om->device);
- om->device = g_strdup(value);
- }
-
- value = config_get_block_string(param, "mixer_control", NULL);
- if (value != NULL) {
- g_free(om->control);
- om->control = g_strdup(value);
- }
-}
-
-static void
oss_mixer_close(struct mixer_data *data)
{
struct oss_mixer *om = (struct oss_mixer *) data;
@@ -215,7 +199,6 @@ oss_mixer_control(struct mixer_data *data, int cmd, void *arg)
const struct mixer_plugin oss_mixer = {
.init = oss_mixer_init,
.finish = oss_mixer_finish,
- .configure = oss_mixer_configure,
.open = oss_mixer_open,
.control = oss_mixer_control,
.close = oss_mixer_close