@@ -5,7 +5,12 @@ import {
55 getPerfRunConfig ,
66 PERF_REPLAY_READY_LOG_MARKER ,
77} from '../../perfRunConfig' ;
8- import type { IrSdkBridge , Session , Telemetry } from '@irdashies/types' ;
8+ import {
9+ TELEMETRY_INSPECTOR_RATE_HZ ,
10+ type IrSdkSourceBridge ,
11+ type Session ,
12+ type Telemetry ,
13+ } from '@irdashies/types' ;
914import logger from '../../logger' ;
1015import type { SessionLifecycle } from '../../sessionLifecycle' ;
1116import type { ChannelBus } from '../channelBridge' ;
@@ -148,7 +153,7 @@ export async function publishIRacingSDKEvents(
148153 overlayManager : OverlayManager ,
149154 lifecycle ?: SessionLifecycle ,
150155 channelBus ?: ChannelBus
151- ) : Promise < IrSdkBridge > {
156+ ) : Promise < IrSdkSourceBridge > {
152157 logger . info ( '[iracingSdkBridge] Loading iRacing SDK bridge...' ) ;
153158 const isTapeReplay = Boolean ( process . env . IRDASHIES_TELEMETRY_REPLAY ) ;
154159 const sourceName = isTapeReplay ? 'telemetry replay' : 'iRacing' ;
@@ -238,7 +243,6 @@ export async function publishIRacingSDKEvents(
238243
239244 let shouldStop = false ;
240245 let lastRunningState : boolean | undefined = undefined ;
241- let latestTelemetry : Telemetry | null = null ;
242246 let latestSession : Session | null = null ;
243247
244248 const telemetryCallbacks = new Set < ( value : Telemetry ) => void > ( ) ;
@@ -256,12 +260,6 @@ export async function publishIRacingSDKEvents(
256260 'runningState' ,
257261 lastRunningState
258262 ) ;
259- if ( latestTelemetry && perfTelemetryDeliveryEnabled )
260- overlayManager . publishMessageToOverlay (
261- id ,
262- 'telemetry' ,
263- telemetryForRenderer ( latestTelemetry )
264- ) ;
265263 if ( latestSession )
266264 overlayManager . publishMessageToOverlay ( id , 'sessionData' , latestSession ) ;
267265 } ) ;
@@ -302,6 +300,7 @@ export async function publishIRacingSDKEvents(
302300 ( async ( ) => {
303301 while ( ! shouldStop ) {
304302 let lastSessionVersion = - 1 ;
303+ let lastInspectorTelemetryPublishTime = Number . NEGATIVE_INFINITY ;
305304 // Negative infinity makes the first tick fetch and publish immediately.
306305 let lastSessionPublishTime = Number . NEGATIVE_INFINITY ;
307306 let lastSessionPollTime = Number . NEGATIVE_INFINITY ;
@@ -327,7 +326,6 @@ export async function publishIRacingSDKEvents(
327326 }
328327
329328 if ( telemetry ) {
330- latestTelemetry = telemetry ;
331329 perfMetrics . markStart ( 'lifecycleTelemetry' ) ;
332330 lifecycle ?. _onTelemetry ( telemetry ) ;
333331 perfMetrics . markEnd ( 'lifecycleTelemetry' ) ;
@@ -346,13 +344,19 @@ export async function publishIRacingSDKEvents(
346344 lapLogRuntime ?. onFrame ( telemetry ) ;
347345 if (
348346 perfTelemetryDeliveryEnabled &&
349- overlayManager . hasLegacyStreamSubscribers ( 'telemetry' )
347+ overlayManager . hasTelemetryInspectorSubscribers ( ) &&
348+ tickTime - lastInspectorTelemetryPublishTime >=
349+ 1000 / TELEMETRY_INSPECTOR_RATE_HZ
350350 ) {
351+ lastInspectorTelemetryPublishTime = tickTime ;
351352 perfMetrics . markStart ( 'telemetryProjection' ) ;
352353 const rendererTelemetry = telemetryForRenderer ( telemetry ) ;
353354 perfMetrics . markEnd ( 'telemetryProjection' ) ;
354355 perfMetrics . markStart ( 'broadcast' ) ;
355- overlayManager . publishMessage ( 'telemetry' , rendererTelemetry ) ;
356+ overlayManager . publishMessage (
357+ 'telemetryInspector:telemetry' ,
358+ rendererTelemetry
359+ ) ;
356360 perfMetrics . markEnd ( 'broadcast' ) ;
357361 }
358362 perfMetrics . markStart ( 'telemetryCallbacks' ) ;
@@ -404,8 +408,8 @@ export async function publishIRacingSDKEvents(
404408 // opened during a disconnect don't get re-seeded with stale data, and
405409 // so the references don't sit in main-process memory indefinitely.
406410 // They get repopulated on the next successful waitForData tick.
407- latestTelemetry = null ;
408411 latestSession = null ;
412+ overlayManager . clearLatestSessionData ?.( ) ;
409413 lifecycle ?. _onDisconnect ( ) ;
410414 }
411415
@@ -434,6 +438,7 @@ export async function publishIRacingSDKEvents(
434438 } ,
435439 stop : ( ) => {
436440 shouldStop = true ;
441+ overlayManager . clearLatestSessionData ?.( ) ;
437442 sdk . stopSDK ( ) ;
438443 clearInterval ( runningStateInterval ) ;
439444 telemetryCallbacks . clear ( ) ;
0 commit comments