From 097113f01e8b041dd829e7c2b3488e6c389583d2 Mon Sep 17 00:00:00 2001 From: Floris Bruynooghe Date: Wed, 8 Mar 2023 14:39:40 +0100 Subject: [PATCH] fixup paused flag use --- src/scheduler.rs | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/scheduler.rs b/src/scheduler.rs index 3970200b6..5c2db37ea 100644 --- a/src/scheduler.rs +++ b/src/scheduler.rs @@ -49,7 +49,7 @@ impl SchedulerState { pub(crate) async fn start(&self, context: Context) { let mut inner = self.inner.write().await; inner.started = true; - if inner.scheduler.is_none() { + if inner.scheduler.is_none() && !inner.paused { Self::do_start(inner, context).await; } } @@ -204,7 +204,8 @@ pub(crate) struct IoPausedGuard<'a> { impl<'a> IoPausedGuard<'a> { pub(crate) async fn resume(&mut self) { self.done = true; - let inner = self.context.scheduler.inner.write().await; + let mut inner = self.context.scheduler.inner.write().await; + inner.paused = false; if inner.started && inner.scheduler.is_none() { SchedulerState::do_start(inner, self.context.clone()).await; } @@ -218,7 +219,8 @@ impl<'a> Drop for IoPausedGuard<'a> { } let context = self.context.clone(); tokio::spawn(async move { - let inner = context.scheduler.inner.write().await; + let mut inner = context.scheduler.inner.write().await; + inner.paused = false; if inner.started && inner.scheduler.is_none() { SchedulerState::do_start(inner, context.clone()).await; }