From 84e6202e4d93b6d34263724328061d009e8c97b9 Mon Sep 17 00:00:00 2001 From: Steve Lhomme Date: Wed, 21 Jan 2026 15:13:58 +0100 Subject: [PATCH] mmdevice: distinguish between initial init failure and device not acquired So we can keep the module around waiting for a new device. --- modules/audio_output/mmdevice.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/audio_output/mmdevice.c b/modules/audio_output/mmdevice.c index 08c42f768b..a4083b6dab 100644 --- a/modules/audio_output/mmdevice.c +++ b/modules/audio_output/mmdevice.c @@ -76,6 +76,7 @@ static char default_device_b[1] = ""; enum device_acquisition_status { DEVICE_PENDING, + DEVICE_INITIALISATION_FAILED, DEVICE_ACQUISITION_FAILED, DEVICE_ACQUIRED, }; @@ -1152,7 +1153,7 @@ static void *MMThread(void *data) error: vlc_mutex_lock(&sys->lock); - sys->device_status = DEVICE_ACQUISITION_FAILED; + sys->device_status = DEVICE_INITIALISATION_FAILED; vlc_cond_signal(&sys->ready); vlc_mutex_unlock(&sys->lock); return NULL; @@ -1381,7 +1382,7 @@ static int Open(vlc_object_t *obj) { vlc_cond_wait(&sys->ready, &sys->lock); - if (sys->device_status == DEVICE_ACQUISITION_FAILED) + if (sys->device_status == DEVICE_INITIALISATION_FAILED) { vlc_mutex_unlock(&sys->lock); Close(obj);