Compare commits
5 Commits
ryanrosell
...
set-timeou
Author | SHA1 | Date | |
---|---|---|---|
8b5ab06b67 | |||
94b606d2d9 | |||
2a2cc44baa | |||
2d31f5b0e0 | |||
bb12eec7f9 |
@ -1,4 +1,4 @@
|
|||||||
import { useLayoutEffect } from 'react'
|
import { useRef, useLayoutEffect } from 'react'
|
||||||
import { _executor } from '../lang/executor'
|
import { _executor } from '../lang/executor'
|
||||||
import { useStore } from '../useStore'
|
import { useStore } from '../useStore'
|
||||||
import { EngineCommandManager } from '../lang/std/engineConnection'
|
import { EngineCommandManager } from '../lang/std/engineConnection'
|
||||||
@ -28,6 +28,11 @@ export function useSetupEngineManager(
|
|||||||
const quadWidth = Math.round(width / 4) * 4
|
const quadWidth = Math.round(width / 4) * 4
|
||||||
const height = streamHeight ? streamHeight : 0
|
const height = streamHeight ? streamHeight : 0
|
||||||
const quadHeight = Math.round(height / 4) * 4
|
const quadHeight = Math.round(height / 4) * 4
|
||||||
|
const eng = useRef<{
|
||||||
|
engine: EngineCommandManager
|
||||||
|
width: number
|
||||||
|
height: number
|
||||||
|
} | null>(null)
|
||||||
|
|
||||||
useLayoutEffect(() => {
|
useLayoutEffect(() => {
|
||||||
setStreamDimensions({
|
setStreamDimensions({
|
||||||
@ -35,19 +40,37 @@ export function useSetupEngineManager(
|
|||||||
streamHeight: quadHeight,
|
streamHeight: quadHeight,
|
||||||
})
|
})
|
||||||
if (!width || !height) return
|
if (!width || !height) return
|
||||||
const eng = new EngineCommandManager({
|
|
||||||
|
if (eng.current) {
|
||||||
|
// Before we go further, we're going to check to see if the
|
||||||
|
// width/height is the same as the last go-around. If it is, we
|
||||||
|
// can continue as normal, but if it's different, we should be
|
||||||
|
// clearing out the manager and going again.
|
||||||
|
let c = eng.current
|
||||||
|
if (width !== c.width || height !== c.height) {
|
||||||
|
eng.current = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (eng.current === null) {
|
||||||
|
eng.current = {
|
||||||
|
engine: new EngineCommandManager({
|
||||||
setMediaStream,
|
setMediaStream,
|
||||||
setIsStreamReady,
|
setIsStreamReady,
|
||||||
width: quadWidth,
|
width: quadWidth,
|
||||||
height: quadHeight,
|
height: quadHeight,
|
||||||
token,
|
token,
|
||||||
})
|
}),
|
||||||
setEngineCommandManager(eng)
|
width: width,
|
||||||
eng.waitForReady.then(() => {
|
height: height,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
setEngineCommandManager(eng.current.engine)
|
||||||
|
eng.current.engine.waitForReady.then(() => {
|
||||||
executeCode()
|
executeCode()
|
||||||
})
|
})
|
||||||
return () => {
|
return () => {
|
||||||
eng?.tearDown()
|
eng.current?.engine?.tearDown()
|
||||||
}
|
}
|
||||||
}, [quadWidth, quadHeight])
|
}, [quadWidth, quadHeight])
|
||||||
}
|
}
|
||||||
|
@ -364,8 +364,10 @@ export class EngineConnection {
|
|||||||
// fix responsiveness for clients that had a weird network hiccup.
|
// fix responsiveness for clients that had a weird network hiccup.
|
||||||
const connectionTimeoutMs = VITE_KC_CONNECTION_TIMEOUT_MS
|
const connectionTimeoutMs = VITE_KC_CONNECTION_TIMEOUT_MS
|
||||||
|
|
||||||
|
console.log('setting timeout for connection')
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (this.isReady()) {
|
if (this.isReady()) {
|
||||||
|
console.log('timeout fired but we were ready')
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
console.log('engine connection timeout on connection, retrying')
|
console.log('engine connection timeout on connection, retrying')
|
||||||
@ -561,6 +563,7 @@ export class EngineCommandManager {
|
|||||||
this.resolveReady = resolve
|
this.resolveReady = resolve
|
||||||
})
|
})
|
||||||
const url = `${VITE_KC_API_WS_MODELING_URL}?video_res_width=${width}&video_res_height=${height}`
|
const url = `${VITE_KC_API_WS_MODELING_URL}?video_res_width=${width}&video_res_height=${height}`
|
||||||
|
console.log('new eng conn')
|
||||||
this.engineConnection = new EngineConnection({
|
this.engineConnection = new EngineConnection({
|
||||||
url,
|
url,
|
||||||
token,
|
token,
|
||||||
@ -777,7 +780,6 @@ export class EngineCommandManager {
|
|||||||
lastMessage = command.cmd.type
|
lastMessage = command.cmd.type
|
||||||
}
|
}
|
||||||
if (!this.engineConnection?.isReady()) {
|
if (!this.engineConnection?.isReady()) {
|
||||||
console.log('socket not ready')
|
|
||||||
return Promise.resolve()
|
return Promise.resolve()
|
||||||
}
|
}
|
||||||
if (command.type !== 'modeling_cmd_req') return Promise.resolve()
|
if (command.type !== 'modeling_cmd_req') return Promise.resolve()
|
||||||
@ -824,7 +826,6 @@ export class EngineCommandManager {
|
|||||||
this.sourceRangeMap[id] = range
|
this.sourceRangeMap[id] = range
|
||||||
|
|
||||||
if (!this.engineConnection?.isReady()) {
|
if (!this.engineConnection?.isReady()) {
|
||||||
console.log('socket not ready')
|
|
||||||
return Promise.resolve()
|
return Promise.resolve()
|
||||||
}
|
}
|
||||||
this.engineConnection?.send(command)
|
this.engineConnection?.send(command)
|
||||||
|
Reference in New Issue
Block a user