On Wed, Sep 16, 2020 at 2:42 AM Gerd Hoffmann <kra...@redhat.com> wrote: > > Handle the spice special case in audio_init instead. > > With the qemu_spice_audio_init() symbol dependency being > gone we can build spiceaudio as module. > > Signed-off-by: Gerd Hoffmann <kra...@redhat.com> > --- > include/ui/qemu-spice.h | 1 - > audio/audio.c | 16 ++++++++++++++++ > audio/spiceaudio.c | 5 ----- > ui/spice-core.c | 1 - > 4 files changed, 16 insertions(+), 7 deletions(-) > > diff --git a/include/ui/qemu-spice.h b/include/ui/qemu-spice.h > index 8c23dfe71797..12474d88f40e 100644 > --- a/include/ui/qemu-spice.h > +++ b/include/ui/qemu-spice.h > @@ -29,7 +29,6 @@ extern int using_spice; > > void qemu_spice_init(void); > void qemu_spice_input_init(void); > -void qemu_spice_audio_init(void); > void qemu_spice_display_init(void); > int qemu_spice_display_add_client(int csock, int skipauth, int tls); > int qemu_spice_add_interface(SpiceBaseInstance *sin); > diff --git a/audio/audio.c b/audio/audio.c > index ce8c6dec5f47..76cdba0943d1 100644 > --- a/audio/audio.c > +++ b/audio/audio.c > @@ -34,6 +34,7 @@ > #include "qemu/module.h" > #include "sysemu/replay.h" > #include "sysemu/runstate.h" > +#include "ui/qemu-spice.h" > #include "trace.h" > > #define AUDIO_CAP "audio" > @@ -1658,6 +1659,21 @@ static AudioState *audio_init(Audiodev *dev, const > char *name) > /* silence gcc warning about uninitialized variable */ > AudiodevListHead head = QSIMPLEQ_HEAD_INITIALIZER(head); > > + if (using_spice) { > + /* > + * When using spice allow the spice audio driver being picked > + * as default. > + * > + * Temporary hack. Using audio devices without explicit > + * audiodev= property is already deprecated. Same goes for > + * the -soundhw switch. Once this support gets finally > + * removed we can also drop the concept of a default audio > + * backend and this can go away. > + */ > + driver = audio_driver_lookup("spice"); > + driver->can_be_default = 1;
fyi, one of my libvirt/QEMU guests now segfaults here. See: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=977301 -dann > + } > + > if (dev) { > /* -audiodev option */ > legacy_config = false; > diff --git a/audio/spiceaudio.c b/audio/spiceaudio.c > index b6b5da4812f2..aae420cff997 100644 > --- a/audio/spiceaudio.c > +++ b/audio/spiceaudio.c > @@ -310,11 +310,6 @@ static struct audio_driver spice_audio_driver = { > .voice_size_in = sizeof (SpiceVoiceIn), > }; > > -void qemu_spice_audio_init (void) > -{ > - spice_audio_driver.can_be_default = 1; > -} > - > static void register_audio_spice(void) > { > audio_driver_register(&spice_audio_driver); > diff --git a/ui/spice-core.c b/ui/spice-core.c > index ecc2ec2c55c2..10aa309f78f7 100644 > --- a/ui/spice-core.c > +++ b/ui/spice-core.c > @@ -804,7 +804,6 @@ void qemu_spice_init(void) > qemu_spice_add_interface(&spice_migrate.base); > > qemu_spice_input_init(); > - qemu_spice_audio_init(); > > qemu_add_vm_change_state_handler(vm_change_state_handler, NULL); > qemu_spice_display_stop(); > -- > 2.27.0 > >