Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> --- server/sound.c | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/server/sound.c b/server/sound.c index bd8812b..2560596 100644 --- a/server/sound.c +++ b/server/sound.c @@ -1425,9 +1425,26 @@ snd_channel_init(SndChannel *self) } static void +snd_channel_finalize(GObject *object) +{ + SndChannel *channel = SND_CHANNEL(object); + + remove_channel(channel); + + free(channel->volume.volume); + channel->volume.volume = NULL; + + G_OBJECT_CLASS(snd_channel_parent_class)->finalize(object); +} + +static void snd_channel_class_init(SndChannelClass *klass) { + GObjectClass *object_class = G_OBJECT_CLASS(klass); RedChannelClass *channel_class = RED_CHANNEL_CLASS(klass); + + object_class->finalize = snd_channel_finalize; + channel_class->config_socket = snd_channel_config_socket; channel_class->alloc_recv_buf = snd_channel_client_alloc_recv_buf; channel_class->release_recv_buf = snd_channel_client_release_recv_buf; @@ -1543,10 +1560,7 @@ static void snd_detach_common(SndChannel *channel) } RedsState *reds = red_channel_get_server(RED_CHANNEL(channel)); - remove_channel(channel); reds_unregister_channel(reds, RED_CHANNEL(channel)); - free(channel->volume.volume); - channel->volume.volume = NULL; red_channel_destroy(RED_CHANNEL(channel)); } -- git-series 0.9.1 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel