aboutsummaryrefslogtreecommitdiff
path: root/audio
diff options
context:
space:
mode:
authorGeoffrey McRae <geoff@hostfission.com>2020-06-13 14:05:18 +1000
committerGerd Hoffmann <kraxel@redhat.com>2020-06-17 14:44:51 +0200
commitbc81e6e56eeea88bb1e3b6105c80850ffb58841c (patch)
tree8ef87b12ca785ad56d77f4323d79686421372362 /audio
parent81e0efb2e57cfdb076887b0f99ce6f0353952617 (diff)
downloadqemu-bc81e6e56eeea88bb1e3b6105c80850ffb58841c.zip
qemu-bc81e6e56eeea88bb1e3b6105c80850ffb58841c.tar.gz
qemu-bc81e6e56eeea88bb1e3b6105c80850ffb58841c.tar.bz2
audio/jack: simplify the re-init code path
Instead of checking for the audodev state in each code path, centralize the check into the initialize function itself to make it safe to call it at any time. Signed-off-by: Geoffrey McRae <geoff@hostfission.com> Message-id: 20200613040518.38172-7-geoff@hostfission.com Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'audio')
-rw-r--r--audio/jackaudio.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/audio/jackaudio.c b/audio/jackaudio.c
index b2b5398..72ed7c4 100644
--- a/audio/jackaudio.c
+++ b/audio/jackaudio.c
@@ -395,6 +395,10 @@ static int qjack_client_init(QJackClient *c)
char client_name[jack_client_name_size()];
jack_options_t options = JackNullOption;
+ if (c->state == QJACK_STATE_RUNNING) {
+ return 0;
+ }
+
c->connect_ports = true;
snprintf(client_name, sizeof(client_name), "%s-%s",
@@ -485,9 +489,7 @@ static int qjack_init_out(HWVoiceOut *hw, struct audsettings *as,
QJackOut *jo = (QJackOut *)hw;
Audiodev *dev = (Audiodev *)drv_opaque;
- if (jo->c.state != QJACK_STATE_DISCONNECTED) {
- return 0;
- }
+ qjack_client_fini(&jo->c);
jo->c.out = true;
jo->c.enabled = false;
@@ -523,9 +525,7 @@ static int qjack_init_in(HWVoiceIn *hw, struct audsettings *as,
QJackIn *ji = (QJackIn *)hw;
Audiodev *dev = (Audiodev *)drv_opaque;
- if (ji->c.state != QJACK_STATE_DISCONNECTED) {
- return 0;
- }
+ qjack_client_fini(&ji->c);
ji->c.out = false;
ji->c.enabled = false;