Merge pull request #1815 from paulkaplan/clear-pen-on-dispose

Clear the pen layer when runtime dispose happens.
This commit is contained in:
Paul Kaplan 2018-12-05 12:30:24 -05:00 committed by GitHub
commit ff3391718d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 21 additions and 0 deletions

View file

@ -627,6 +627,14 @@ class Runtime extends EventEmitter {
return 'RUNTIME_STARTED';
}
/**
* Event name when the runtime dispose has been called.
* @const {string}
*/
static get RUNTIME_DISPOSED () {
return 'RUNTIME_DISPOSED';
}
/**
* Event name for reporting that a block was updated and needs to be rerendered.
* @const {string}
@ -1548,6 +1556,7 @@ class Runtime extends EventEmitter {
this.stopAll();
this.targets.map(this.disposeTarget, this);
this._monitorState = OrderedMap({});
this.emit(Runtime.RUNTIME_DISPOSED);
// @todo clear out extensions? turboMode? etc.
// *********** Cloud *******************

View file

@ -67,6 +67,7 @@ class Scratch3PenBlocks {
this._onTargetMoved = this._onTargetMoved.bind(this);
runtime.on('targetWasCreated', this._onTargetCreated);
runtime.on('RUNTIME_DISPOSED', this.clear.bind(this));
}
/**

View file

@ -239,3 +239,14 @@ test('setCompatibilityMode does not restart if it was not running', t => {
t.equal(started, false);
t.end();
});
test('Disposing the runtime emits an event', t => {
let disposed = false;
const rt = new Runtime();
rt.addListener('RUNTIME_DISPOSED', () => {
disposed = true;
});
rt.dispose();
t.equal(disposed, true);
t.end();
});