diff options
Diffstat (limited to 'embassy-sync')
| -rw-r--r-- | embassy-sync/src/channel.rs | 3 | ||||
| -rw-r--r-- | embassy-sync/src/priority_channel.rs | 3 | ||||
| -rw-r--r-- | embassy-sync/src/pubsub/mod.rs | 3 | ||||
| -rw-r--r-- | embassy-sync/src/zerocopy_channel.rs | 3 |
4 files changed, 12 insertions, 0 deletions
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<T, const N: usize> ChannelState<T, N> { | |||
| 562 | } | 562 | } |
| 563 | 563 | ||
| 564 | fn clear(&mut self) { | 564 | fn clear(&mut self) { |
| 565 | if self.queue.is_full() { | ||
| 566 | self.senders_waker.wake(); | ||
| 567 | } | ||
| 565 | self.queue.clear(); | 568 | self.queue.clear(); |
| 566 | } | 569 | } |
| 567 | 570 | ||
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 | |||
| 411 | } | 411 | } |
| 412 | 412 | ||
| 413 | fn clear(&mut self) { | 413 | fn clear(&mut self) { |
| 414 | if self.queue.len() == self.queue.capacity() { | ||
| 415 | self.senders_waker.wake(); | ||
| 416 | } | ||
| 414 | self.queue.clear(); | 417 | self.queue.clear(); |
| 415 | } | 418 | } |
| 416 | 419 | ||
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<T: Clone, const CAP: usize, const SUBS: usize, const PUBS: usize> PubSubSta | |||
| 421 | } | 421 | } |
| 422 | 422 | ||
| 423 | fn clear(&mut self) { | 423 | fn clear(&mut self) { |
| 424 | if self.is_full() { | ||
| 425 | self.publisher_wakers.wake(); | ||
| 426 | } | ||
| 424 | self.queue.clear(); | 427 | self.queue.clear(); |
| 425 | } | 428 | } |
| 426 | 429 | ||
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 { | |||
| 287 | } | 287 | } |
| 288 | 288 | ||
| 289 | fn clear(&mut self) { | 289 | fn clear(&mut self) { |
| 290 | if self.full { | ||
| 291 | self.receive_waker.wake(); | ||
| 292 | } | ||
| 290 | self.front = 0; | 293 | self.front = 0; |
| 291 | self.back = 0; | 294 | self.back = 0; |
| 292 | self.full = false; | 295 | self.full = false; |
