From: Marc-André Lureau Date: Mon, 13 Oct 2025 19:18:41 +0000 (+0400) Subject: audio/dsound: simplify init() X-Git-Tag: v10.2.0-rc1~29^2~23 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a9e0a4340ea79fcef54651ed1442a4980bd9b686;p=thirdparty%2Fqemu.git audio/dsound: simplify init() Use dsound_audio_fini() on error & fail if the capture failed to initialize too. Signed-off-by: Marc-André Lureau Reviewed-by: Philippe Mathieu-Daudé --- diff --git a/audio/dsoundaudio.c b/audio/dsoundaudio.c index f3bb48d007..c8745a3df0 100644 --- a/audio/dsoundaudio.c +++ b/audio/dsoundaudio.c @@ -638,7 +638,7 @@ static void *dsound_audio_init(Audiodev *dev, Error **errp) hr = CoInitialize (NULL); if (FAILED (hr)) { dsound_logerr (hr, "Could not initialize COM\n"); - g_free(s); + dsound_audio_fini(s); return NULL; } @@ -651,19 +651,14 @@ static void *dsound_audio_init(Audiodev *dev, Error **errp) ); if (FAILED (hr)) { dsound_logerr (hr, "Could not create DirectSound instance\n"); - g_free(s); + dsound_audio_fini(s); return NULL; } hr = IDirectSound_Initialize (s->dsound, NULL); if (FAILED (hr)) { dsound_logerr (hr, "Could not initialize DirectSound\n"); - - hr = IDirectSound_Release (s->dsound); - if (FAILED (hr)) { - dsound_logerr (hr, "Could not release DirectSound\n"); - } - g_free(s); + dsound_audio_fini(s); return NULL; } @@ -676,17 +671,15 @@ static void *dsound_audio_init(Audiodev *dev, Error **errp) ); if (FAILED (hr)) { dsound_logerr (hr, "Could not create DirectSoundCapture instance\n"); - } else { - hr = IDirectSoundCapture_Initialize (s->dsound_capture, NULL); - if (FAILED (hr)) { - dsound_logerr (hr, "Could not initialize DirectSoundCapture\n"); + dsound_audio_fini(s); + return NULL; + } - hr = IDirectSoundCapture_Release (s->dsound_capture); - if (FAILED (hr)) { - dsound_logerr (hr, "Could not release DirectSoundCapture\n"); - } - s->dsound_capture = NULL; - } + hr = IDirectSoundCapture_Initialize (s->dsound_capture, NULL); + if (FAILED(hr)) { + dsound_logerr(hr, "Could not initialize DirectSoundCapture\n"); + dsound_audio_fini(s); + return NULL; } err = dsound_set_cooperative_level(s);