51dfe6b3d4acfb1caafbee15bfdba3ea1f18fd43 braney Mon Jun 30 15:55:01 2025 -0700 ongoing work on liftOver diff --git src/hg/lib/trackHub.c src/hg/lib/trackHub.c index 82b2e1a258f..654abadb5b0 100644 --- src/hg/lib/trackHub.c +++ src/hg/lib/trackHub.c @@ -1681,42 +1681,43 @@ { dyStringPrintf(dy, "superTrack on show\n"); } if (!isVetted(track)) dyStringPrintf(dy, "avoidHandler on\n"); dumpTdbAndChildren(cart, dy, tdb); return dy; } static boolean validateOneTdb(char *db, struct trackDb *tdb, struct trackDb **badList) /* Make sure the tdb is a track type we grok. */ { -if (sameString("cytoBandIdeo", tdb->track) || !( startsWith("bigBed", tdb->type) || \ +if (sameString("cytoBandIdeo", tdb->track) || + !( startsWith("bigBed", tdb->type) || \ startsWith("bigWig", tdb->type) || \ startsWith("bigDbSnp", tdb->type) || \ startsWith("bigGenePred", tdb->type) || \ startsWith("gvf", tdb->type) || \ startsWith("genePred", tdb->type) || \ startsWith("narrowPeak", tdb->type) || \ startsWith("bigLolly", tdb->type) || \ sameString("bed", tdb->type) || startsWith("bed ", tdb->type))) { - printf("%s %s
\n",tdb->track,tdb->type); + slAddHead(badList, tdb); return FALSE; } // make sure we have a bigDataUrl if (startsWith("bigBed", tdb->type) || \ startsWith("bigWig", tdb->type)) { char *fileName = cloneString(trackDbSetting(tdb, "bigDataUrl")); if (fileName == NULL) { struct sqlConnection *conn = hAllocConnTrack(db, tdb); fileName = bbiNameFromSettingOrTable(tdb, conn, tdb->table); hashAdd(tdb->settingsHash, "bigDataUrl", fileName); hFreeConn(&conn); @@ -1797,33 +1798,36 @@ } static boolean checkCartVisibility(struct cart *cart, struct trackDb *tdb) { char *cartVis = cartOptionalString(cart, tdb->track); if (cartVis != NULL) tdb->visibility = hTvFromString(cartVis); return (tdb->visibility != tvHide); } static void walkTree(FILE *f, char *db, struct cart *cart, struct trackDb *tdb, struct dyString *visDy, struct trackDb **badList) /* walk tree looking for visible tracks to output to hub. */ { unsigned priority = 1; struct hash *haveSuper = newHash(0); +struct trackDb *tdbNext = NULL; -for(; tdb; tdb = tdb->next) +for(; tdb; tdb = tdbNext) { + tdbNext = tdb->next; + boolean isVisible = FALSE; if (tdb->parent == NULL) isVisible = checkCartVisibility(cart, tdb); else if (isParentVisible(cart, tdb) && isSubtrackVisible(cart, tdb)) // child of supertrack { if (hashLookup(haveSuper, tdb->parent->track) == NULL) // output yet? { //if (checkCartVisibility(cart, tdb->parent)) { tdb->parent->visibility = hTvFromString("tvShow"); outTrack(f, cart, tdb->parent, priority++); hashStore(haveSuper, tdb->parent->track); }