From 5dd288dc0cbdd8a4457da28be8dab0a1fba1d100 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Tue, 21 Nov 2023 11:10:23 +0100 Subject: [PATCH] sources: reselect earlier when removing selected source When a selected source is being removed, reset the instance and rerun the selection while the source is still marked as selected. This forces a "Can't synchronise" message to be logged when all sources are removed. Reported-by: Thomas Lange --- sources.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/sources.c b/sources.c index ec09ff3..4bfc1a1 100644 --- a/sources.c +++ b/sources.c @@ -314,8 +314,12 @@ void SRC_DestroyInstance(SRC_Instance instance) if (last_updated_inst == instance) last_updated_inst = NULL; + /* Force reselection if currently selected */ + SRC_ResetInstance(instance); + assert(initialised); if (instance->index < 0 || instance->index >= n_sources || + instance->index == selected_source_index || instance != sources[instance->index]) assert(0); @@ -330,10 +334,7 @@ void SRC_DestroyInstance(SRC_Instance instance) update_sel_options(); - /* If this was the previous reference source, we have to reselect! */ - if (selected_source_index == dead_index) - SRC_ReselectSource(); - else if (selected_source_index > dead_index) + if (selected_source_index > dead_index) --selected_source_index; }