From: Marc-André Lureau Date: Mon, 13 Oct 2025 20:01:42 +0000 (+0400) Subject: audio: register and unregister vmstate with AudioState X-Git-Tag: v10.2.0-rc1~29^2~17 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=582ca26c991049c23c04fe499779657d8ba79561;p=thirdparty%2Fqemu.git audio: register and unregister vmstate with AudioState Proper lifecycle management with QOM state. Signed-off-by: Marc-André Lureau Reviewed-by: Philippe Mathieu-Daudé --- diff --git a/audio/audio.c b/audio/audio.c index 4c3c3fd52f..853930bb48 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1614,6 +1614,8 @@ static void audio_vm_change_state_handler (void *opaque, bool running, audio_reset_timer (s); } +static const VMStateDescription vmstate_audio; + static void audio_state_init(Object *obj) { AudioState *s = AUDIO_STATE(obj); @@ -1625,6 +1627,8 @@ static void audio_state_init(Object *obj) s->vmse = qemu_add_vm_change_state_handler(audio_vm_change_state_handler, s); assert(s->vmse != NULL); + + vmstate_register_any(NULL, &vmstate_audio, s); } static void audio_state_finalize(Object *obj) @@ -1679,6 +1683,8 @@ static void audio_state_finalize(Object *obj) qemu_del_vm_change_state_handler(s->vmse); s->vmse = NULL; } + + vmstate_unregister(NULL, &vmstate_audio, s); } static Object *get_audiodevs_root(void) @@ -1787,7 +1793,6 @@ static AudioState *audio_init(Audiodev *dev, Error **errp) } object_unref(s); QLIST_INIT (&s->card_head); - vmstate_register_any(NULL, &vmstate_audio, s); return s; out: