diff options
author | Max Kellermann <max@duempel.org> | 2009-10-23 09:15:51 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2009-10-23 09:15:51 +0200 |
commit | ede828c910f546dfe8ca4b07b678e9a2806c6889 (patch) | |
tree | d64ebd0c846f87908fc7531b5503f6b5d88b635a /src | |
parent | 7dd172efecca315cb5dcbf2e27d06f6a72d361d1 (diff) | |
download | mpd-ede828c910f546dfe8ca4b07b678e9a2806c6889.tar.gz mpd-ede828c910f546dfe8ca4b07b678e9a2806c6889.tar.xz mpd-ede828c910f546dfe8ca4b07b678e9a2806c6889.zip |
mixer_control: allow methods "open" and "close" to be NULL
It's possible to have a mixer implementation which does not explicitly
need the methods open() and close().
Diffstat (limited to 'src')
-rw-r--r-- | src/mixer/software_mixer_plugin.c | 19 | ||||
-rw-r--r-- | src/mixer_control.c | 6 |
2 files changed, 5 insertions, 20 deletions
diff --git a/src/mixer/software_mixer_plugin.c b/src/mixer/software_mixer_plugin.c index 2fcacd46d..062b9b3ef 100644 --- a/src/mixer/software_mixer_plugin.c +++ b/src/mixer/software_mixer_plugin.c @@ -61,23 +61,6 @@ software_mixer_finish(struct mixer *data) g_free(sm); } -static bool -software_mixer_open(struct mixer *data, G_GNUC_UNUSED GError **error_r) -{ - struct software_mixer *sm = (struct software_mixer *)data; - - (void)sm; - return true; -} - -static void -software_mixer_close(struct mixer *data) -{ - struct software_mixer *sm = (struct software_mixer *)data; - - (void)sm; -} - static int software_mixer_get_volume(struct mixer *mixer, G_GNUC_UNUSED GError **error_r) { @@ -109,8 +92,6 @@ software_mixer_set_volume(struct mixer *mixer, unsigned volume, const struct mixer_plugin software_mixer_plugin = { .init = software_mixer_init, .finish = software_mixer_finish, - .open = software_mixer_open, - .close = software_mixer_close, .get_volume = software_mixer_get_volume, .set_volume = software_mixer_set_volume, .global = true, diff --git a/src/mixer_control.c b/src/mixer_control.c index df1e43003..7def51cb2 100644 --- a/src/mixer_control.c +++ b/src/mixer_control.c @@ -66,6 +66,8 @@ mixer_open(struct mixer *mixer, GError **error_r) if (mixer->open) success = true; + else if (mixer->plugin->open == NULL) + success = mixer->open = true; else success = mixer->open = mixer->plugin->open(mixer, error_r); @@ -83,7 +85,9 @@ mixer_close_internal(struct mixer *mixer) assert(mixer->plugin != NULL); assert(mixer->open); - mixer->plugin->close(mixer); + if (mixer->plugin->close != NULL) + mixer->plugin->close(mixer); + mixer->open = false; } |