@@ -92,6 +92,26 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
92
92
93
93
publicAPI . getViewNodeFactory = ( ) => model . myFactory ;
94
94
95
+ // prevent default context lost handler
96
+ model . canvas . addEventListener (
97
+ 'webglcontextlost' ,
98
+ ( event ) => {
99
+ event . preventDefault ( ) ;
100
+ } ,
101
+ false
102
+ ) ;
103
+
104
+ model . canvas . addEventListener (
105
+ 'webglcontextrestored' ,
106
+ publicAPI . restoreContext ,
107
+ false
108
+ ) ;
109
+
110
+ // Cache the value here as calling it on each frame is expensive
111
+ const isImmersiveVrSupported =
112
+ navigator . xr !== undefined &&
113
+ navigator . xr . isSessionSupported ( 'immersive-vr' ) ;
114
+
95
115
// Auto update style
96
116
const previousSize = [ 0 , 0 ] ;
97
117
function updateWindow ( ) {
@@ -244,10 +264,7 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
244
264
let result = null ;
245
265
246
266
// Do we have webxr support
247
- if (
248
- navigator . xr !== undefined &&
249
- navigator . xr . isSessionSupported ( 'immersive-vr' )
250
- ) {
267
+ if ( isImmersiveVrSupported ) {
251
268
publicAPI . invokeHaveVRDisplay ( ) ;
252
269
}
253
270
@@ -267,21 +284,6 @@ function vtkOpenGLRenderWindow(publicAPI, model) {
267
284
model . canvas . getContext ( 'experimental-webgl' , options ) ;
268
285
}
269
286
270
- // prevent default context lost handler
271
- model . canvas . addEventListener (
272
- 'webglcontextlost' ,
273
- ( event ) => {
274
- event . preventDefault ( ) ;
275
- } ,
276
- false
277
- ) ;
278
-
279
- model . canvas . addEventListener (
280
- 'webglcontextrestored' ,
281
- publicAPI . restoreContext ,
282
- false
283
- ) ;
284
-
285
287
return result ;
286
288
} ;
287
289
0 commit comments