From 186ed18ff83c67e47cb6aec727280220a32637c8 Mon Sep 17 00:00:00 2001 From: Cosmo Myzrail Gorynych Date: Thu, 24 Dec 2020 12:52:01 +1200 Subject: [PATCH] :bug: Partially fix memory leaks in emitter editors --- .../particles/emitter-tandem-editor.tag | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/src/riotTags/particles/emitter-tandem-editor.tag b/src/riotTags/particles/emitter-tandem-editor.tag index cf06dac26..22d8a4f67 100644 --- a/src/riotTags/particles/emitter-tandem-editor.tag +++ b/src/riotTags/particles/emitter-tandem-editor.tag @@ -262,7 +262,13 @@ emitter-tandem-editor.panel.view.flexrow this.on('mount', () => { window.addEventListener('resize', this.updatePreviewLayout); - + window.signals.on('emitterResetRequest', this.resetEmitters); + }); + this.on('unmount', () => { + window.removeEventListener('resize', this.updatePreviewLayout); + window.signals.off('emitterResetRequest', this.resetEmitters); + }); + this.on('mount', () => { const box = this.refs.preview.getBoundingClientRect(); this.gridGen = require('./data/node_requires/generators/gridTexture').generatePixiTextureGrid; @@ -271,6 +277,7 @@ emitter-tandem-editor.panel.view.flexrow this.renderer = new PIXI.Application({ width: Math.round(box.width), height: Math.round(box.height), + sharedTicker: false, view: this.refs.canvas, antialias: !global.currentProject.settings.rendering.pixelatedrender }); @@ -306,12 +313,17 @@ emitter-tandem-editor.panel.view.flexrow this.resetEmitters(); this.updatePreviewLayout(); - - window.signals.on('emitterResetRequest', this.resetEmitters); }); this.on('unmount', () => { - window.removeEventListener('resize', this.updatePreviewLayout); - window.signals.off('emitterResetRequest', this.resetEmitters); + this.emitterContainer = void 0; + if (this.renderer) { + this.renderer.ticker.stop(); + this.renderer.destroy(); + } + if (this.resetOnCompletionTimeout) { + clearTimeout(this.resetOnCompletionTimeout); + this.resetOnCompletionTimeout = null; + } }); this.deleteEmitter = emitter => {