mirror of
https://github.com/scratchfoundation/scratch-vm.git
synced 2024-12-23 06:23:37 -05:00
Add Thread.blockContainer
Store the thread's blocks at blockContainer letting execute quickly determine the block source. Monitor threads are a monitor thread. They do not become a target thread suddenly.
This commit is contained in:
parent
ab8d8e5f34
commit
4286e3e982
4 changed files with 13 additions and 7 deletions
|
@ -126,12 +126,7 @@ const execute = function (sequencer, thread, recursiveCall) {
|
|||
const currentBlockId = thread.peekStack();
|
||||
const currentStackFrame = thread.peekStackFrame();
|
||||
|
||||
let blockContainer;
|
||||
if (thread.updateMonitor) {
|
||||
blockContainer = runtime.monitorBlocks;
|
||||
} else {
|
||||
blockContainer = target.blocks;
|
||||
}
|
||||
let blockContainer = thread.blockContainer;
|
||||
let block = blockContainer.getBlock(currentBlockId);
|
||||
if (typeof block === 'undefined') {
|
||||
blockContainer = runtime.flyoutBlocks;
|
||||
|
|
|
@ -861,6 +861,9 @@ class Runtime extends EventEmitter {
|
|||
thread.target = target;
|
||||
thread.stackClick = opts.stackClick;
|
||||
thread.updateMonitor = opts.updateMonitor;
|
||||
thread.blockContainer = opts.updateMonitor ?
|
||||
this.monitorBlocks :
|
||||
target.blocks;
|
||||
|
||||
thread.pushStack(id);
|
||||
this.threads.push(thread);
|
||||
|
@ -890,6 +893,7 @@ class Runtime extends EventEmitter {
|
|||
newThread.target = thread.target;
|
||||
newThread.stackClick = thread.stackClick;
|
||||
newThread.updateMonitor = thread.updateMonitor;
|
||||
newThread.blockContainer = thread.blockContainer;
|
||||
newThread.pushStack(thread.topBlock);
|
||||
const i = this.threads.indexOf(thread);
|
||||
if (i > -1) {
|
||||
|
|
|
@ -42,6 +42,12 @@ class Thread {
|
|||
*/
|
||||
this.target = null;
|
||||
|
||||
/**
|
||||
* The Blocks this thread will execute.
|
||||
* @type {Blocks}
|
||||
*/
|
||||
this.blockContainer = null;
|
||||
|
||||
/**
|
||||
* Whether the thread requests its script to glow during this frame.
|
||||
* @type {boolean}
|
||||
|
|
|
@ -91,7 +91,8 @@ const generateThread = function (runtime) {
|
|||
rt.blocks.createBlock(generateBlock(next));
|
||||
th.pushStack(next);
|
||||
th.target = rt;
|
||||
|
||||
th.blockContainer = rt.blocks;
|
||||
|
||||
runtime.threads.push(th);
|
||||
|
||||
return th;
|
||||
|
|
Loading…
Reference in a new issue