File tree Expand file tree Collapse file tree 1 file changed +9
-2
lines changed Expand file tree Collapse file tree 1 file changed +9
-2
lines changed Original file line number Diff line number Diff line change @@ -596,7 +596,10 @@ export default class Node extends Component {
596
596
// We should only dispose() if gl is still here.
597
597
// otherwise, GL should already have free resources.
598
598
// (also workaround for https://github.com/stackgl/headless-gl/issues/90)
599
- const { framebuffer, backbuffer } = this ;
599
+ const { framebuffer, backbuffer, _shader } = this ;
600
+ if ( _shader ) {
601
+ _shader . dispose ( ) ;
602
+ }
600
603
if ( framebuffer ) {
601
604
framebuffer . dispose ( ) ;
602
605
}
@@ -707,7 +710,7 @@ export default class Node extends Component {
707
710
}
708
711
709
712
_latestShaderInfo : ?ShaderInfo ;
710
- _shader : ?Shader ;
713
+ _shader : ?Shader ; // in case of inline shader, a Node currently hold a Node
711
714
712
715
_getShader ( shaderProp : mixed ) : Shader {
713
716
const { glSurface } = this . context ;
@@ -728,6 +731,10 @@ export default class Node extends Component {
728
731
! latestShaderInfo ||
729
732
! shaderInfoEquals ( latestShaderInfo , shaderInfo )
730
733
) {
734
+ if ( shader ) {
735
+ shader . dispose ( ) ;
736
+ delete this . _shader ;
737
+ }
731
738
shader = glSurface . _makeShader ( shaderInfo ) ;
732
739
this . _latestShaderInfo = shaderInfo ;
733
740
this . _shader = shader ;
You can’t perform that action at this time.
0 commit comments