From e2ddba92f7f3f9e64da10e8351e335989f388109 Mon Sep 17 00:00:00 2001 From: ibuki2003 Date: Sun, 26 Jan 2025 17:23:41 +0900 Subject: [PATCH] embassy-sync: fix clear() to wake senders --- embassy-sync/src/channel.rs | 3 +++ embassy-sync/src/priority_channel.rs | 3 +++ embassy-sync/src/pubsub/mod.rs | 3 +++ embassy-sync/src/zerocopy_channel.rs | 3 +++ 4 files changed, 12 insertions(+) diff --git a/embassy-sync/src/channel.rs b/embassy-sync/src/channel.rs index 18b053111..9a7d2fa2f 100644 --- a/embassy-sync/src/channel.rs +++ b/embassy-sync/src/channel.rs @@ -562,6 +562,9 @@ impl ChannelState { } fn clear(&mut self) { + if self.queue.is_full() { + self.senders_waker.wake(); + } self.queue.clear(); } diff --git a/embassy-sync/src/priority_channel.rs b/embassy-sync/src/priority_channel.rs index d466a22ff..36959204f 100644 --- a/embassy-sync/src/priority_channel.rs +++ b/embassy-sync/src/priority_channel.rs @@ -411,6 +411,9 @@ where } fn clear(&mut self) { + if self.queue.len() == self.queue.capacity() { + self.senders_waker.wake(); + } self.queue.clear(); } diff --git a/embassy-sync/src/pubsub/mod.rs b/embassy-sync/src/pubsub/mod.rs index a2360a1d8..606efff0a 100644 --- a/embassy-sync/src/pubsub/mod.rs +++ b/embassy-sync/src/pubsub/mod.rs @@ -421,6 +421,9 @@ impl PubSubSta } fn clear(&mut self) { + if self.is_full() { + self.publisher_wakers.wake(); + } self.queue.clear(); } diff --git a/embassy-sync/src/zerocopy_channel.rs b/embassy-sync/src/zerocopy_channel.rs index 56433cd8a..15914578e 100644 --- a/embassy-sync/src/zerocopy_channel.rs +++ b/embassy-sync/src/zerocopy_channel.rs @@ -287,6 +287,9 @@ impl State { } fn clear(&mut self) { + if self.full { + self.receive_waker.wake(); + } self.front = 0; self.back = 0; self.full = false;