From f4f25ffee58caef9a8b3692ff1afdaecfe6ae297 Mon Sep 17 00:00:00 2001 From: Josh Hawkins <32435876+hawkeye217@users.noreply.github.com> Date: Mon, 12 Oct 2026 08:46:47 -0500 Subject: [PATCH] fix mse buffer trim spinning in a remove loop Subtracting 15s from the buffered end left a floating point remainder, so when Firefox held exactly 15s of buffer the handler called remove() on a near-zero range that removed nothing, and each updateend called it again. The loop pegged a CPU core and kept running after the websocket closed. Trimming now requires more than 1s past the window. --- web/src/components/player/MsePlayer.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/src/components/player/MsePlayer.tsx b/web/src/components/player/MsePlayer.tsx index e8daed4437..a8856d671e 100644 --- a/web/src/components/player/MsePlayer.tsx +++ b/web/src/components/player/MsePlayer.tsx @@ -473,7 +473,7 @@ function MSEPlayer({ } else if (sb.buffered && sb.buffered.length) { const end = sb.buffered.end(sb.buffered.length - 1) - 15; const start = sb.buffered.start(0); - if (end > start) { + if (end - start > 1) { sb.remove(start, end); msRef.current?.setLiveSeekableRange(end, end + 15); }