Expose context lost simulator

This commit is contained in:
schmelczerandras 2020-10-27 11:08:31 +01:00
parent 32aebe9036
commit 69ad74ed73
8 changed files with 36 additions and 11 deletions

View file

@ -1,3 +1,5 @@
import { formatLog } from '../../../helper/format-log';
/** @internal */
let isEnabled = false;
@ -14,12 +16,12 @@ export const enableContextLostSimulator = (canvas: HTMLCanvasElement) => {
const simulateContextLost = () => {
ext.loseContext();
console.log('lost');
console.info(formatLog('context-lost-simulator', 'lost'));
const restoreTimeout = Math.random() * 500;
setTimeout(() => {
ext.restoreContext();
console.log('restored');
console.info(formatLog('context-lost-simulator', 'restored'));
}, restoreTimeout);
setTimeout(() => simulateContextLost(), restoreTimeout + Math.random() * 500);

View file

@ -1,3 +1,4 @@
import { formatLog } from '../../helper/format-log';
import { numberToGlslFloat } from '../../helper/number-to-glsl-float';
import { wait } from '../../helper/wait';
import { tryEnableExtension } from './helper/enable-extension';
@ -138,9 +139,12 @@ export class ParallelCompiler {
const line = Number.parseInt(match[1]);
const error = match[2];
console.error(
`Error: ${error}\nSource (line ${line}):\n${
shader.source.split('\n')[line - 1]
}`
formatLog(
'parallel-compiler',
`Error: ${error}\nSource (line ${line}):\n${
shader.source.split('\n')[line - 1]
}`
)
);
}
throw new Error('Error while compiling shader');

View file

@ -1,6 +1,7 @@
import { ReadonlyVec2, vec2 } from 'gl-matrix';
import { Drawable } from '../../../drawables/drawable';
import { DrawableDescriptor } from '../../../drawables/drawable-descriptor';
import { formatLog } from '../../../helper/format-log';
import { RuntimeSettings } from '../settings/runtime-settings';
import { StartupSettings } from '../settings/startup-settings';
import { Renderer } from './renderer';
@ -51,7 +52,6 @@ export class ContextAwareRenderer implements Renderer {
if (!e.message.includes('Context lost')) {
throw e;
}
console.warn(e.message);
}
}
@ -63,7 +63,6 @@ export class ContextAwareRenderer implements Renderer {
if (!e.message.includes('Context lost')) {
throw e;
}
console.warn(e.message);
}
this.setRuntimeSettings(this.runtimeOverrides);
@ -75,13 +74,12 @@ export class ContextAwareRenderer implements Renderer {
private handleContextLost(event: Event) {
this.isRendererReady = false;
event.preventDefault();
console.warn('Context lost');
console.warn(formatLog('context-aware-renderer', 'Context lost'));
}
private handleContextRestored(event: Event) {
event.preventDefault();
console.info('Context restored');
console.info(formatLog('context-aware-renderer', 'Context restored'));
this.createRenderer();
}
@ -92,7 +90,6 @@ export class ContextAwareRenderer implements Renderer {
} catch (e) {
if (e.message.includes('Context lost')) {
this.isRendererReady = false;
console.warn(e.message);
return defaultValue;
}
throw e;

View file

@ -11,4 +11,5 @@ export const defaultStartupSettings: StartupSettings = {
backgroundColor: vec4.fromValues(1, 1, 1, 1),
lightPenetrationRatio: 0.75,
enableStopwatch: false,
enableContextLostSimulator: false,
};

View file

@ -41,6 +41,13 @@ export interface StartupSettings {
*/
paletteSize: number;
/**
* Many context lost event will be simulated when enabled.
*
* Useful for testing.
*/
enableContextLostSimulator: boolean;
/**
* The default background color of the scene, can have transparency on every platform.
*/