QLIST_INIT(&s->hw_head_in);
QLIST_INIT(&s->cap_head);
s->ts = timer_new_ns(QEMU_CLOCK_VIRTUAL, audio_timer, s);
+
+ s->vmse = qemu_add_vm_change_state_handler(audio_vm_change_state_handler, s);
+ assert(s->vmse != NULL);
}
static void audio_state_finalize(Object *obj)
timer_free(s->ts);
s->ts = NULL;
}
+
+ if (s->vmse) {
+ qemu_del_vm_change_state_handler(s->vmse);
+ s->vmse = NULL;
+ }
}
static Object *get_audiodevs_root(void)
{
int done = 0;
const char *drvname;
- VMChangeStateEntry *vmse;
AudioState *s;
struct audio_driver *driver;
}
}
- vmse = qemu_add_vm_change_state_handler (audio_vm_change_state_handler, s);
- assert(vmse != NULL);
-
if (!object_property_try_add_child(get_audiodevs_root(), dev->id, OBJECT(s), errp)) {
goto out;
}