aea31ed3dfad99bed299624e281260966d808792
kate
  Wed Aug 28 14:23:24 2019 -0700
Minor optimization. refs #22422

diff --git src/hg/hgTracks/simpleTracks.c src/hg/hgTracks/simpleTracks.c
index 79d91567..45c4a7f 100644
--- src/hg/hgTracks/simpleTracks.c
+++ src/hg/hgTracks/simpleTracks.c
@@ -528,43 +528,44 @@
 	}
     }
 
 // do spaceSaver layout
 struct spaceSaver *ss;
 ss = spaceSaverNew(0, fullInsideWidth, maxCount);
 ss->vis = vis;
 for(w=windows,tg=tgSave; w; w=w->next,tg=tg->nextWindow)
     {
     // save these values so we can detect vis and window changes
     tg->ss->vis = vis;
     tg->ss->window = w;
     char *chrom = w->chromName;
     // int winOffset = w->insideX - fullInsideX;  // no longer needed
     double scale = (double)w->insideWidth/(w->winEnd - w->winStart);
+    boolean useTypeItemNameAsKey = isTypeUseItemNameAsKey(tg);
     for (item = tg->items; item != NULL; item = item->next)
 	{
 	// TODO match items from different windows by using item start end and name in hash?
 	int baseStart = tg->itemStart(tg, item);
 	int baseEnd = tg->itemEnd(tg, item);
 	if (baseStart < w->winEnd && baseEnd > w->winStart)
 	    { // it intersects the window
 
 	    char *mapItemName = tg->mapItemName(tg, item);
 	    char key[1024];
 	    // TODO see key caveats above
 	    // For now, this should be good enough to illustrate the basic behavior we want to see.
-	    if (isTypeUseItemNameAsKey(tg))
+	    if (useTypeItemNameAsKey)
 		safef(key, sizeof key, "%s",  tg->itemName(tg, item));
 	    else
 		safef(key, sizeof key, "%s:%d-%d %s", chrom, baseStart, baseEnd, mapItemName);
 	    struct hashEl *hel = hashLookup(sameItem, key);
 	    if (!hel)
 		{
 		if (tg->networkErrMsg) // probably timed-out before thread finished adding more items.
 		    break;
 		errAbort("unexpected error: lookup of key [%s] in sameItem hash failed.", key);
 		}
 	    struct sameItemNode *sin = (struct sameItemNode *)hel->val;
 	    if (!sin)
 		errAbort("sin empty (hel->val)!");
 	    if (!sin->done)
 		{ // still needs to be done