From 7a5a6529ab31c0d3961567f9fb4b636812ebe297 Mon Sep 17 00:00:00 2001 From: Arnold Loubriat Date: Sun, 11 Oct 2026 10:24:28 +0200 Subject: [PATCH] fix: Keep Unix adapter lists sorted by ID --- adapters/atspi-common/src/context.rs | 3 ++- adapters/unix/src/context.rs | 21 +++++++++++++-------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/adapters/atspi-common/src/context.rs b/adapters/atspi-common/src/context.rs index 79e5fd77a..5c8d8bbe5 100644 --- a/adapters/atspi-common/src/context.rs +++ b/adapters/atspi-common/src/context.rs @@ -111,7 +111,8 @@ impl AppContext { } pub(crate) fn push_adapter(&mut self, id: usize, context: &Arc) { - self.adapters.push((id, Arc::clone(context))); + let index = self.adapter_index(id).unwrap_or_else(|index| index); + self.adapters.insert(index, (id, Arc::clone(context))); } pub(crate) fn remove_adapter(&mut self, id: usize) { diff --git a/adapters/unix/src/context.rs b/adapters/unix/src/context.rs index b2e7d4b1f..470d3ec97 100644 --- a/adapters/unix/src/context.rs +++ b/adapters/unix/src/context.rs @@ -222,15 +222,20 @@ async fn process_adapter_message( deactivation_handler, state, } => { - adapters.push(AdapterEntry { - id, - activation_handler, - deactivation_handler, - state, - }); + let index = adapters + .binary_search_by(|entry| entry.id.cmp(&id)) + .unwrap_or_else(|index| index); + adapters.insert( + index, + AdapterEntry { + id, + activation_handler, + deactivation_handler, + state, + }, + ); if atspi_bus.is_some() { - let entry = adapters.last_mut().unwrap(); - activate_adapter(entry); + activate_adapter(&mut adapters[index]); } } Message::RemoveAdapter { id } => {