diff --git a/src/core/display/chunks/chunkFactory.js b/src/core/display/chunks/chunkFactory.js index 93e1600c..d868afe2 100644 --- a/src/core/display/chunks/chunkFactory.js +++ b/src/core/display/chunks/chunkFactory.js @@ -119,7 +119,7 @@ SceneJS_ChunkFactory.prototype.putChunk = function (chunk) { chunk.recycle(); } - this._chunks[chunk.id] = null; + delete this._chunks[chunk.id]; var freeChunks = SceneJS_ChunkFactory._freeChunks[chunk.type]; @@ -140,7 +140,7 @@ SceneJS_ChunkFactory.prototype.webglRestored = function () { chunk = this._chunks[chunkId]; // Re-cache chunk's shader variable locations - if (chunk.build) { + if (chunk && chunk.build) { chunk.build(); } } diff --git a/src/core/display/programFactory.js b/src/core/display/programFactory.js index da9625df..5f676285 100644 --- a/src/core/display/programFactory.js +++ b/src/core/display/programFactory.js @@ -44,7 +44,7 @@ SceneJS_ProgramFactory.prototype.putProgram = function(program) { SceneJS_ProgramSourceFactory.putSource(program.hash); - this._programs[program.hash] = null; + delete this._programs[program.hash]; } }; @@ -54,10 +54,14 @@ SceneJS_ProgramFactory.prototype.putProgram = function(program) { SceneJS_ProgramFactory.prototype.webglRestored = function() { var gl = this._canvas.gl; + var program; for (var id in this._programs) { if (this._programs.hasOwnProperty(id)) { - this._programs[id].build(gl); + program = this._programs[id]; + if (program && program.build) { + program.build(gl); + } } } }; diff --git a/src/core/scene/coreFactory.js b/src/core/scene/coreFactory.js index e5c2dbc3..3d961f72 100644 --- a/src/core/scene/coreFactory.js +++ b/src/core/scene/coreFactory.js @@ -135,7 +135,7 @@ SceneJS_CoreFactory.prototype.putCore = function (core) { var cores = this._cores[core.type]; - cores[core.coreId] = null; + delete cores[core.coreId]; this._stateMap.removeItem(core.stateId); // Release state ID for reuse } @@ -161,7 +161,7 @@ SceneJS_CoreFactory.prototype.webglRestored = function () { core = cores[coreId]; - if (core.webglRestored) { // Method augmented on core by user + if (core && core.webglRestored) { // Method augmented on core by user core.webglRestored(); } }