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 <thomas@corelatus.se>
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);
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;
}