Browse Source

add doNotForceWebGLContextLoss option

dsehnal 4 years ago
parent
commit
07f351888f
2 changed files with 5 additions and 5 deletions
  1. 3 3
      src/mol-canvas3d/canvas3d.ts
  2. 2 2
      src/mol-plugin/context.ts

+ 3 - 3
src/mol-canvas3d/canvas3d.ts

@@ -135,7 +135,7 @@ interface Canvas3D {
     readonly stats: RendererStats
     readonly interaction: Canvas3dInteractionHelper['events']
 
-    dispose(): void
+    dispose(options?: { doNotForceWebGLContextLoss?: boolean }): void
 }
 
 const requestAnimationFrame = typeof window !== 'undefined'
@@ -705,7 +705,7 @@ namespace Canvas3D {
             get interaction() {
                 return interactionHelper.events;
             },
-            dispose: () => {
+            dispose: (options?: { doNotForceWebGLContextLoss?: boolean }) => {
                 contextRestoredSub.unsubscribe();
 
                 scene.clear();
@@ -715,7 +715,7 @@ namespace Canvas3D {
                 renderer.dispose();
                 interactionHelper.dispose();
 
-                gl.getExtension('WEBGL_lose_context')?.loseContext();
+                if (!options?.doNotForceWebGLContextLoss) gl.getExtension('WEBGL_lose_context')?.loseContext();
             }
         };
 

+ 2 - 2
src/mol-plugin/context.ts

@@ -256,10 +256,10 @@ export class PluginContext {
         return PluginCommands.State.RemoveObject(this, { state: this.state.data, ref: StateTransform.RootRef });
     }
 
-    dispose() {
+    dispose(options?: { doNotForceWebGLContextLoss?: boolean }) {
         if (this.disposed) return;
         this.commands.dispose();
-        this.canvas3d?.dispose();
+        this.canvas3d?.dispose(options);
         this.ev.dispose();
         this.state.dispose();
         this.managers.task.dispose();