mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2025-07-11 21:43:58 -04:00
Merge pull request #1211 from mzgoddard/broadcast-and-wait-promise
yield a tick if broadcastandwait is waiting on threads waiting for a future tick
This commit is contained in:
commit
f5234c777a
5 changed files with 44 additions and 8 deletions
src/engine
|
@ -57,6 +57,13 @@ class BlockUtility {
|
|||
this.thread.status = Thread.STATUS_YIELD;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the thread to yield until the next tick of the runtime.
|
||||
*/
|
||||
yieldTick () {
|
||||
this.thread.status = Thread.STATUS_YIELD_TICK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Start a branch in the current block.
|
||||
* @param {number} branchNum Which branch to step to (i.e., 1, 2).
|
||||
|
|
|
@ -1017,6 +1017,19 @@ class Runtime extends EventEmitter {
|
|||
this.threads.indexOf(thread) > -1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return whether a thread is waiting for more information or done.
|
||||
* @param {?Thread} thread Thread object to check.
|
||||
* @return {boolean} True if the thread is waiting
|
||||
*/
|
||||
isWaitingThread (thread) {
|
||||
return (
|
||||
thread.status === Thread.STATUS_PROMISE_WAIT ||
|
||||
thread.status === Thread.STATUS_YIELD_TICK ||
|
||||
!this.isActiveThread(thread)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Toggle a script.
|
||||
* @param {!string} topBlockId ID of block that starts the script.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue