From 4132d8db4dacac58c01ff2cac48ddd08d20ec5e1 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Mon, 22 May 2023 13:49:02 -0700 Subject: [PATCH] Fix audio crashing after some time. --- web/src/player/ring.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/web/src/player/ring.ts b/web/src/player/ring.ts index ccf6f2a..4b1b7ae 100644 --- a/web/src/player/ring.ts +++ b/web/src/player/ring.ts @@ -60,6 +60,12 @@ export class Ring { } } + // capacity = 1024 + // read = 2048 + // write = 3072 + // startIndex = 0 + // readIndex = 0 + let startIndex = startPos % this.capacity; let endIndex = endPos % this.capacity; @@ -84,11 +90,13 @@ export class Ring { frameCount: first.length, }) - frame.copyTo(second, { - planeIndex: i, - frameOffset: first.length, - frameCount: second.length, - }) + if (second.length > 0) { + frame.copyTo(second, { + planeIndex: i, + frameOffset: first.length, + frameCount: second.length, + }) + } } } @@ -142,6 +150,7 @@ export class Ring { } size() { + // TODO is this thread safe? let readPos = Atomics.load(this.state, STATE.READ_POS) let writePos = Atomics.load(this.state, STATE.WRITE_POS)