From a9e0a4340ea79fcef54651ed1442a4980bd9b686 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marc-Andr=C3=A9=20Lureau?= Date: Mon, 13 Oct 2025 23:18:41 +0400 Subject: [PATCH] audio/dsound: simplify init() MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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é --- audio/dsoundaudio.c | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) 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); -- 2.47.3