c4559e7ed9e720d0101ac6839cd1772a611b44d1
braney
  Mon Apr 27 16:07:25 2026 -0700
hgTracks: emit printTrackTiming() on the trackImgOnly fast path, refs #37445

When hgTracks is called with hgt.trackImgOnly=1 and !ideogramToo it
takes an early-return path at hgTracks.c:9469 that emits the image and
map but skipped the per-track timing block. With measureTiming=1 set,
emit printTrackTiming() before returning so per-track load/draw times
are available to clients of the JS-redraw fast path.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 1d225e1dec2..4e2a4b4d710 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -9459,30 +9459,32 @@
 	{
 	struct track *ideoTrack = chromIdeoTrack(window->trackList);
 	if (ideoTrack)
 	    {
 	    ideoTrack->limitedVisSet = TRUE;
 	    ideoTrack->limitedVis = tvHide; /* Don't draw in main gif. */
 	    }
 	}
     }
 
 if (trackImgOnly && !ideogramToo)
     {
     // right-click to change viz
     makeActiveImage(trackList, psOutput);
     fflush(stdout);
+    if (measureTiming)
+        printTrackTiming();
     return;  // bail out b/c we are done
     }
 
 if (!hideControls)
     {
     /* set white-space to nowrap to prevent buttons from wrapping when screen is
      * narrow */
     hPrintf("<DIV STYLE=\"white-space:nowrap;\">\n");
     printMenuBar();
     //menuBarAppendExtTools();
 
     /* Show title */
     freezeName = hFreezeFromDb(database);
     if(freezeName == NULL)
         freezeName = "Unknown";