mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-05 02:44:02 +00:00
Clean up the panel after host testing
Drop the render restarts added while chasing the black overlays; keep the full render-error report and stop the timer after an error, as Cesium does. Correct comments the investigation outran, share the panel_request name, and document the host differences the panel works around.
This commit is contained in:
1 parent
d0da4b0722
commit
efdee8d255
6 files changed
+43
-53
No files matched your search
+12
-16
@@ -247,19 +247,19 @@ test('a panel keeps drawing from a timer while animation frames stop', () => {
|
||||
assert.equal(frame, null);
|
||||
});
|
||||
|
||||
test('a panel reports a render error in full and starts drawing again', () => {
|
||||
test('a panel reports a render error in full and stops drawing', () => {
|
||||
let listener = null;
|
||||
const timeouts = [];
|
||||
let tick = null;
|
||||
const windowRef = {
|
||||
requestAnimationFrame: () => 1,
|
||||
cancelAnimationFrame() {},
|
||||
setInterval: () => 1,
|
||||
setInterval: (fn) => ((tick = fn), 1),
|
||||
clearInterval() {},
|
||||
setTimeout: (fn) => (timeouts.push(fn), timeouts.length),
|
||||
clearTimeout() {},
|
||||
};
|
||||
const drawn = [];
|
||||
const viewer = {
|
||||
useDefaultRenderLoop: false,
|
||||
resize() {},
|
||||
render: () => drawn.push('render'),
|
||||
scene: {
|
||||
renderError: {
|
||||
addEventListener: (fn) => ((listener = fn), () => (listener = null)),
|
||||
@@ -270,17 +270,13 @@ test('a panel reports a render error in full and starts drawing again', () => {
|
||||
const original = console.error;
|
||||
console.error = (...args) => logged.push(args.join(' '));
|
||||
try {
|
||||
const stop = keepPanelRendering(viewer, { windowRef, now: () => 0 });
|
||||
for (let attempt = 0; attempt < 5; attempt++)
|
||||
listener(viewer.scene, {
|
||||
name: 'RuntimeError',
|
||||
message: 'worker failed',
|
||||
});
|
||||
let clock = 0;
|
||||
const stop = keepPanelRendering(viewer, { windowRef, now: () => clock });
|
||||
listener(viewer.scene, { name: 'RuntimeError', message: 'worker failed' });
|
||||
assert.match(logged[0], /render error: .*"message":"worker failed"/);
|
||||
// Only a few restarts, so an error that repeats does not spin.
|
||||
assert.equal(timeouts.length, 3);
|
||||
timeouts[0]();
|
||||
assert.equal(viewer.useDefaultRenderLoop, true);
|
||||
clock = 1000;
|
||||
tick();
|
||||
assert.deepEqual(drawn, []);
|
||||
stop();
|
||||
assert.equal(listener, null);
|
||||
} finally {
|
||||
|
||||
Reference in new issue
Block a user