add notice for missing SharedArrayBuffer and widget workaround

This commit is contained in:
Stewart Allen 2023-02-07 14:54:55 -05:00
commit 50f69925c2
2 changed files with 18 additions and 2 deletions

View file

@ -1499,6 +1499,11 @@ gapp.register("kiri.init", [], (root, exports) => {
function init_one() { function init_one() {
let { event, conf, view, show } = api; let { event, conf, view, show } = api;
if (!window.SharedArrayBuffer) {
api.alerts.show("The security context of this");
api.alerts.show("window blocks important functionality");
}
event.emit('init.one'); event.emit('init.one');
// ensure we have settings from last session // ensure we have settings from last session

View file

@ -21,6 +21,9 @@ const { avgc, trackFn } = utils;
const solid_opacity = 1.0; const solid_opacity = 1.0;
const groups = []; const groups = [];
const sharedArrayClass = self.SharedArrayBuffer || undefined;
const hasSharedArrays = sharedArrayClass ? true : false;
let nextId = 0; let nextId = 0;
function newWidget(id,group) { return new Widget(id,group) } function newWidget(id,group) { return new Widget(id,group) }
@ -148,6 +151,14 @@ class Widget {
return o; return o;
} }
#newBuffer(length) {
if (hasSharedArrays) {
return new SharedArrayBuffer(length);
} else {
return new ArrayBuffer(length);
}
}
/** /**
* *
* @param {Float32Array} vertices * @param {Float32Array} vertices
@ -163,9 +174,9 @@ class Widget {
vertices = data.vertices; vertices = data.vertices;
throw "deprecated vertex data format"; throw "deprecated vertex data format";
} }
if (!(vertices.buffer && vertices.buffer instanceof SharedArrayBuffer)) { if (!(vertices.buffer && vertices.buffer instanceof sharedArrayClass)) {
// console.log('converting to shared vertices'); // console.log('converting to shared vertices');
let newvert = new Float32Array(new SharedArrayBuffer(vertices.buffer.byteLength)); let newvert = new Float32Array(this.#newBuffer(vertices.buffer.byteLength));
newvert.set(vertices); newvert.set(vertices);
vertices = newvert; vertices = newvert;
} }