[Spice-devel] [PATCH spice-gtk] gstaudio: set object also when GstStreamVolume is not implemented

Marc-André Lureau marcandre.lureau at gmail.com
Mon Jan 14 11:41:27 UTC 2019


On Mon, Jan 14, 2019 at 3:25 PM Snir Sheriber <ssheribe at redhat.com> wrote:
>
> If GstStreamVolume is not implemented (e.g. in alsasrc) element value is
> set to NULL, this is causing some g_object assertions to fail.
>
> Signed-off-by: Snir Sheriber <ssheribe at redhat.com>

ack,

thanks

> ---
>  src/spice-gstaudio.c | 24 ++++++++++++------------
>  1 file changed, 12 insertions(+), 12 deletions(-)
>
> diff --git a/src/spice-gstaudio.c b/src/spice-gstaudio.c
> index d0cfbc6..84f452d 100644
> --- a/src/spice-gstaudio.c
> +++ b/src/spice-gstaudio.c
> @@ -344,7 +344,7 @@ static void playback_data(SpicePlaybackChannel *channel,
>  static void playback_volume_changed(GObject *object, GParamSpec *pspec, gpointer data)
>  {
>      SpiceGstaudio *gstaudio = data;
> -    GstElement *e;
> +    GstElement *e = NULL;
>      guint16 *volume;
>      guint nchannels;
>      SpiceGstaudioPrivate *p = gstaudio->priv;
> @@ -365,7 +365,7 @@ static void playback_volume_changed(GObject *object, GParamSpec *pspec, gpointer
>
>      if (GST_IS_BIN(p->playback.sink))
>          e = gst_bin_get_by_interface(GST_BIN(p->playback.sink), GST_TYPE_STREAM_VOLUME);
> -    else
> +    if (!e)
>          e = g_object_ref(p->playback.sink);
>
>      if (GST_IS_STREAM_VOLUME(e))
> @@ -380,7 +380,7 @@ static void playback_mute_changed(GObject *object, GParamSpec *pspec, gpointer d
>  {
>      SpiceGstaudio *gstaudio = data;
>      SpiceGstaudioPrivate *p = gstaudio->priv;
> -    GstElement *e;
> +    GstElement *e = NULL;
>      gboolean mute;
>
>      if (!p->playback.sink)
> @@ -391,7 +391,7 @@ static void playback_mute_changed(GObject *object, GParamSpec *pspec, gpointer d
>
>      if (GST_IS_BIN(p->playback.sink))
>          e = gst_bin_get_by_interface(GST_BIN(p->playback.sink), GST_TYPE_STREAM_VOLUME);
> -    else
> +    if (!e)
>          e = g_object_ref(p->playback.sink);
>
>      if (GST_IS_STREAM_VOLUME(e))
> @@ -404,7 +404,7 @@ static void record_volume_changed(GObject *object, GParamSpec *pspec, gpointer d
>  {
>      SpiceGstaudio *gstaudio = data;
>      SpiceGstaudioPrivate *p = gstaudio->priv;
> -    GstElement *e;
> +    GstElement *e = NULL;
>      guint16 *volume;
>      guint nchannels;
>      gdouble vol;
> @@ -424,7 +424,7 @@ static void record_volume_changed(GObject *object, GParamSpec *pspec, gpointer d
>
>      if (GST_IS_BIN(p->record.src))
>          e = gst_bin_get_by_interface(GST_BIN(p->record.src), GST_TYPE_STREAM_VOLUME);
> -    else
> +    if (!e)
>          e = g_object_ref(p->record.src);
>
>      if (GST_IS_STREAM_VOLUME(e))
> @@ -439,7 +439,7 @@ static void record_mute_changed(GObject *object, GParamSpec *pspec, gpointer dat
>  {
>      SpiceGstaudio *gstaudio = data;
>      SpiceGstaudioPrivate *p = gstaudio->priv;
> -    GstElement *e;
> +    GstElement *e = NULL;
>      gboolean mute;
>
>      if (!p->record.src)
> @@ -450,7 +450,7 @@ static void record_mute_changed(GObject *object, GParamSpec *pspec, gpointer dat
>
>      if (GST_IS_BIN(p->record.src))
>          e = gst_bin_get_by_interface(GST_BIN(p->record.src), GST_TYPE_STREAM_VOLUME);
> -    else
> +    if (!e)
>          e = g_object_ref(p->record.src);
>
>      if (GST_IS_STREAM_VOLUME (e))
> @@ -558,7 +558,7 @@ static gboolean spice_gstaudio_get_playback_volume_info_finish(SpiceAudio *audio
>                                                                 GError **error)
>  {
>      SpiceGstaudioPrivate *p = SPICE_GSTAUDIO(audio)->priv;
> -    GstElement *e;
> +    GstElement *e = NULL;
>      gboolean lmute;
>      gdouble vol;
>      GTask *task = G_TASK(res);
> @@ -582,7 +582,7 @@ static gboolean spice_gstaudio_get_playback_volume_info_finish(SpiceAudio *audio
>
>      if (GST_IS_BIN(p->playback.sink))
>          e = gst_bin_get_by_interface(GST_BIN(p->playback.sink), GST_TYPE_STREAM_VOLUME);
> -    else
> +    if (!e)
>          e = g_object_ref(p->playback.sink);
>
>      if (GST_IS_STREAM_VOLUME(e)) {
> @@ -640,7 +640,7 @@ static gboolean spice_gstaudio_get_record_volume_info_finish(SpiceAudio *audio,
>                                                               GError **error)
>  {
>      SpiceGstaudioPrivate *p = SPICE_GSTAUDIO(audio)->priv;
> -    GstElement *e;
> +    GstElement *e = NULL;
>      gboolean lmute;
>      gdouble vol;
>      gboolean fake_channel = FALSE;
> @@ -665,7 +665,7 @@ static gboolean spice_gstaudio_get_record_volume_info_finish(SpiceAudio *audio,
>
>      if (GST_IS_BIN(p->record.src))
>          e = gst_bin_get_by_interface(GST_BIN(p->record.src), GST_TYPE_STREAM_VOLUME);
> -    else
> +    if (!e)
>          e = g_object_ref(p->record.src);
>
>      if (GST_IS_STREAM_VOLUME(e)) {
> --
> 2.19.1
>
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel



-- 
Marc-André Lureau


More information about the Spice-devel mailing list