@@ -184,7 +184,6 @@ export function PlayerContent() {
184184 await commands . stopPlayback ( ) ;
185185 setEditorState ( "playing" , false ) ;
186186 } else {
187- // Ensure we seek to the current playback time before starting playback
188187 await commands . seekTo ( Math . floor ( editorState . playbackTime * FPS ) ) ;
189188 await commands . startPlayback ( FPS , previewResolutionBase ( ) ) ;
190189 setEditorState ( "playing" , true ) ;
@@ -463,12 +462,60 @@ function PreviewCanvas() {
463462 createSignal < HTMLDivElement > ( ) ;
464463 const containerBounds = createElementBounds ( canvasContainerRef ) ;
465464
465+ // #region agent log
466+ let canvasRenderCount = 0 ;
467+ let totalCanvasRenderTime = 0 ;
468+ let maxCanvasRenderTime = 0 ;
469+ let lastCanvasMetricsLog = performance . now ( ) ;
470+ // #endregion
471+
466472 createEffect ( ( ) => {
467473 const frame = latestFrame ( ) ;
468474 if ( ! frame ) return ;
469475 if ( ! canvasRef ) return ;
470- const ctx = canvasRef . getContext ( "2d" ) ;
471- ctx ?. putImageData ( frame . data , 0 , 0 ) ;
476+ const ctx = canvasRef . getContext ( "2d" , { alpha : false } ) ;
477+ if ( ! ctx ) return ;
478+ // #region agent log
479+ const renderStart = performance . now ( ) ;
480+ // #endregion
481+ createImageBitmap ( frame . data ) . then ( ( bitmap ) => {
482+ ctx . drawImage ( bitmap , 0 , 0 ) ;
483+ bitmap . close ( ) ;
484+ // #region agent log
485+ const renderTime = performance . now ( ) - renderStart ;
486+ canvasRenderCount ++ ;
487+ totalCanvasRenderTime += renderTime ;
488+ maxCanvasRenderTime = Math . max ( maxCanvasRenderTime , renderTime ) ;
489+ if (
490+ performance . now ( ) - lastCanvasMetricsLog >= 2000 &&
491+ canvasRenderCount > 0
492+ ) {
493+ const avgTime = totalCanvasRenderTime / canvasRenderCount ;
494+ fetch (
495+ "http://127.0.0.1:7242/ingest/966647b7-72f6-4ab7-b76e-6b773ac020d7" ,
496+ {
497+ method : "POST" ,
498+ headers : { "Content-Type" : "application/json" } ,
499+ body : JSON . stringify ( {
500+ location : "Player.tsx:canvas_render" ,
501+ message : "canvas render metrics" ,
502+ data : {
503+ canvasRenderCount,
504+ avgRenderTimeMs : avgTime . toFixed ( 2 ) ,
505+ maxRenderTimeMs : maxCanvasRenderTime . toFixed ( 2 ) ,
506+ frameWidth : frame . width ,
507+ frameHeight : frame . data . height ,
508+ } ,
509+ timestamp : Date . now ( ) ,
510+ sessionId : "debug-session" ,
511+ hypothesisId : "E" ,
512+ } ) ,
513+ } ,
514+ ) . catch ( ( ) => { } ) ;
515+ lastCanvasMetricsLog = performance . now ( ) ;
516+ }
517+ // #endregion
518+ } ) ;
472519 } ) ;
473520
474521 return (
0 commit comments