From 2e4800d3fef8c54fb2c6f8165c9d2d61a7c4b414 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Fri, 5 Sep 2014 19:11:51 -0400 Subject: [PATCH] WebGLRenderer: Deallocate Object when removed from scene graph (no need for object.dispose()). See #5269. --- examples/webgl_test_memory.html | 1 - src/core/Object3D.js | 6 ------ src/renderers/WebGLRenderer.js | 12 ++++++++---- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/examples/webgl_test_memory.html b/examples/webgl_test_memory.html index 6397e231e9..70c4001f9b 100644 --- a/examples/webgl_test_memory.html +++ b/examples/webgl_test_memory.html @@ -88,7 +88,6 @@ // clean up - mesh.dispose(); geometry.dispose(); material.dispose(); texture.dispose(); diff --git a/src/core/Object3D.js b/src/core/Object3D.js index 1608d0fdfc..7b65bd3f92 100644 --- a/src/core/Object3D.js +++ b/src/core/Object3D.js @@ -706,12 +706,6 @@ THREE.Object3D.prototype = { return object; - }, - - dispose: function () { - - this.dispatchEvent( { type: 'dispose' } ); - } }; diff --git a/src/renderers/WebGLRenderer.js b/src/renderers/WebGLRenderer.js index 3a1b473a65..485cb4479c 100644 --- a/src/renderers/WebGLRenderer.js +++ b/src/renderers/WebGLRenderer.js @@ -513,11 +513,11 @@ THREE.WebGLRenderer = function ( parameters ) { // Events - var onObjectDispose = function ( event ) { + var onObjectRemoved = function ( event ) { var object = event.target; - object.removeEventListener( 'dispose', onObjectDispose ); + object.removeEventListener( 'removed', onObjectRemoved ); removeObject( object ) @@ -3550,11 +3550,11 @@ THREE.WebGLRenderer = function ( parameters ) { if ( object.__webglInit === undefined ) { object.__webglInit = true; - object.addEventListener( 'dispose', onObjectDispose ); - object._modelViewMatrix = new THREE.Matrix4(); object._normalMatrix = new THREE.Matrix3(); + object.addEventListener( 'removed', onObjectRemoved ); + } var geometry = object.geometry; @@ -3864,6 +3864,10 @@ THREE.WebGLRenderer = function ( parameters ) { } + delete object.__webglInit; + delete object._modelViewMatrix; + delete object._normalMatrix; + delete object.__webglActive; }; -- GitLab