()
| 1049 | } |
| 1050 | |
| 1051 | function processNextFrame() { |
| 1052 | if (isProcessing) return; |
| 1053 | |
| 1054 | const buffer = nextFrame || pendingFrame; |
| 1055 | if (!buffer) return; |
| 1056 | |
| 1057 | if (nextFrame) { |
| 1058 | nextFrame = null; |
| 1059 | } else { |
| 1060 | pendingFrame = null; |
| 1061 | } |
| 1062 | |
| 1063 | isProcessing = true; |
| 1064 | |
| 1065 | const frameWorker = ensureWorker(); |
| 1066 | if (producer) { |
| 1067 | const written = producer.write(buffer); |
| 1068 | if (!written) { |
| 1069 | sharedBufferFallbacks++; |
| 1070 | isProcessingSharedFrame = false; |
| 1071 | frameWorker.postMessage({ type: "frame", buffer }, [buffer]); |
| 1072 | } else { |
| 1073 | sharedBufferWrites++; |
| 1074 | isProcessingSharedFrame = true; |
| 1075 | frameWorker.postMessage({ type: "wake" }); |
| 1076 | } |
| 1077 | } else { |
| 1078 | isProcessingSharedFrame = false; |
| 1079 | frameWorker.postMessage({ type: "frame", buffer }, [buffer]); |
| 1080 | } |
| 1081 | } |
| 1082 | |
| 1083 | ws.addEventListener("open", () => { |
| 1084 | setIsConnected(true); |
no test coverage detected