[libvirt] [PATCH 1/3] audio: omitting audiodev= parameter is only deprecated

Kővágó, Zoltán posted 3 patches 6 years, 5 months ago
There is a newer version of this series
[libvirt] [PATCH 1/3] audio: omitting audiodev= parameter is only deprecated
Posted by Kővágó, Zoltán 6 years, 5 months ago
Unfortunately, changes introduced in af2041ed2d "audio: audiodev=
parameters no longer optional when -audiodev present" breaks backward
compatibility.  This patch changes the error into a deprecation warning.

Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com>
---
 qemu-deprecated.texi | 7 +++++++
 audio/audio.c        | 8 ++++----
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
index 00a4b6f350..9d74a1cfc0 100644
--- a/qemu-deprecated.texi
+++ b/qemu-deprecated.texi
@@ -72,6 +72,13 @@ backend settings instead of environment variables.  To ease migration to
 the new format, the ``-audiodev-help'' option can be used to convert
 the current values of the environment variables to ``-audiodev'' options.
 
+@subsection Creating sound card devices and vnc without audiodev= property (since 4.2)
+
+When not using the deprecated legacy audio config, each sound card
+should specify an @code{audiodev=} property.  Additionally, when using
+vnc, you should specify an @code{audiodev=} propery if you plan to
+transmit audio through the VNC protocol.
+
 @subsection -mon ...,control=readline,pretty=on|off (since 4.1)
 
 The @code{pretty=on|off} switch has no effect for HMP monitors, but is
diff --git a/audio/audio.c b/audio/audio.c
index 7d715332c9..e13addf922 100644
--- a/audio/audio.c
+++ b/audio/audio.c
@@ -1412,8 +1412,9 @@ static AudioState *audio_init(Audiodev *dev, const char *name)
         drvname = AudiodevDriver_str(dev->driver);
     } else if (!QTAILQ_EMPTY(&audio_states)) {
         if (!legacy_config) {
-            dolog("You must specify an audiodev= for the device %s\n", name);
-            exit(1);
+            dolog("Device %s: audiodev default parameter is deprecated, please "
+                  "specify audiodev=%s\n", name,
+                  QTAILQ_FIRST(&audio_states)->dev->id);
         }
         return QTAILQ_FIRST(&audio_states);
     } else {
@@ -1548,8 +1549,7 @@ CaptureVoiceOut *AUD_add_capture(
 
     if (!s) {
         if (!legacy_config) {
-            dolog("You must specify audiodev when trying to capture\n");
-            return NULL;
+            dolog("Capturing without setting an audiodev is deprecated\n");
         }
         s = audio_init(NULL, NULL);
     }
-- 
2.22.0

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list
Re: [Qemu-devel] [PATCH 1/3] audio: omitting audiodev= parameter is only deprecated
Posted by Maxim Levitsky 6 years, 5 months ago
On Mon, 2019-08-26 at 02:29 +0200, Kővágó, Zoltán wrote:
> Unfortunately, changes introduced in af2041ed2d "audio: audiodev=
> parameters no longer optional when -audiodev present" breaks backward
> compatibility.  This patch changes the error into a deprecation warning.
> 
> Signed-off-by: Kővágó, Zoltán <DirtY.iCE.hu@gmail.com>
> ---
>  qemu-deprecated.texi | 7 +++++++
>  audio/audio.c        | 8 ++++----
>  2 files changed, 11 insertions(+), 4 deletions(-)
> 
> diff --git a/qemu-deprecated.texi b/qemu-deprecated.texi
> index 00a4b6f350..9d74a1cfc0 100644
> --- a/qemu-deprecated.texi
> +++ b/qemu-deprecated.texi
> @@ -72,6 +72,13 @@ backend settings instead of environment variables.  To ease migration to
>  the new format, the ``-audiodev-help'' option can be used to convert
>  the current values of the environment variables to ``-audiodev'' options.
>  
> +@subsection Creating sound card devices and vnc without audiodev= property (since 4.2)
> +
> +When not using the deprecated legacy audio config, each sound card
> +should specify an @code{audiodev=} property.  Additionally, when using
> +vnc, you should specify an @code{audiodev=} propery if you plan to
> +transmit audio through the VNC protocol.
> +
>  @subsection -mon ...,control=readline,pretty=on|off (since 4.1)
>  
>  The @code{pretty=on|off} switch has no effect for HMP monitors, but is
> diff --git a/audio/audio.c b/audio/audio.c
> index 7d715332c9..e13addf922 100644
> --- a/audio/audio.c
> +++ b/audio/audio.c
> @@ -1412,8 +1412,9 @@ static AudioState *audio_init(Audiodev *dev, const char *name)
>          drvname = AudiodevDriver_str(dev->driver);
>      } else if (!QTAILQ_EMPTY(&audio_states)) {
>          if (!legacy_config) {
> -            dolog("You must specify an audiodev= for the device %s\n", name);
> -            exit(1);
> +            dolog("Device %s: audiodev default parameter is deprecated, please "
> +                  "specify audiodev=%s\n", name,
> +                  QTAILQ_FIRST(&audio_states)->dev->id);
>          }
>          return QTAILQ_FIRST(&audio_states);
>      } else {
> @@ -1548,8 +1549,7 @@ CaptureVoiceOut *AUD_add_capture(
>  
>      if (!s) {
>          if (!legacy_config) {
> -            dolog("You must specify audiodev when trying to capture\n");
> -            return NULL;
> +            dolog("Capturing without setting an audiodev is deprecated\n");
>          }
>          s = audio_init(NULL, NULL);
>      }


This allowed me to boot th VM with single audiodev without specifying the audiodev in the device,
but on shutdown qemu crashes with heap corruption sadly.

 -audiodev pa,id=snd1,server=/run/user/103992/pulse/native
 -device ich9-intel-hda,id=sound0,msi=on
 -device hda-micro,id=sound0-codec0,bus=sound0.0,cad=0

In qemu output:
free(): invalid next size (fast)


Best regards,
	Maxim Levitsky