fix: only register async work with transition if it isn't already done (closes #3197) (#3209)

This commit is contained in:
Greg Johnston
2024-11-08 09:04:52 -05:00
committed by GitHub
parent 2abbdb6594
commit 0eebe9e289

View File

@@ -286,7 +286,9 @@ macro_rules! spawn_derived {
let mut first_run = {
let (ready_tx, ready_rx) = oneshot::channel();
AsyncTransition::register(ready_rx);
if !was_ready {
AsyncTransition::register(ready_rx);
}
Some(ready_tx)
};
@@ -342,7 +344,9 @@ macro_rules! spawn_derived {
// register with global transition listener, if any
let ready_tx = first_run.take().unwrap_or_else(|| {
let (ready_tx, ready_rx) = oneshot::channel();
AsyncTransition::register(ready_rx);
if !was_ready {
AsyncTransition::register(ready_rx);
}
ready_tx
});