a513cccc30dd0697dc78935f51a636e52a0793f0 hiram Mon Mar 23 16:36:04 2026 -0700 manage gcOnFly track regarding sessions refs #35958 diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index bf26fd7d894..4af0cf51c31 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -7435,39 +7435,49 @@ // load the track list and check to see if we need to rewrite the cart int cartVersionFromTrackDb = loadFromTrackDb(&trackList); int cartVersionFromCart = cartGetVersion(cart); if (cartVersionFromTrackDb > cartVersionFromCart) cartRewrite(cart, cartVersionFromTrackDb, cartVersionFromCart); if (measureTiming) measureTime("Time after trackDbLoad "); if (pcrResultParseCart(database, cart, NULL, NULL, NULL)) slSafeAddHead(&trackList, pcrResultTg()); if (userSeqString != NULL) slSafeAddHead(&trackList, userPslTg()); slSafeAddHead(&trackList, oligoMatchTg()); if (cfgOptionBooleanDefault("gcOnTheFly", FALSE)) { + /* If a saved session is active but has no setting for the gcOnFly track, + * the session predates this track -- do not inject it. */ + boolean sessionActive = isNotEmpty(cartOptionalString(cart, hgsOtherUserSessionName)); + boolean gcOnFlyInSession = (cartOptionalString(cart, GC_ON_FLY_TRACK_NAME) != NULL); + boolean gcOnFlyAllowed = !sessionActive || gcOnFlyInSession; + if (gcOnFlyAllowed) + { + char *sessionVis = gcOnFlyInSession + ? cartUsualString(cart, GC_ON_FLY_TRACK_NAME, "dense") : NULL; if (cfgOptionBooleanDefault("gcOnTheFlyCoExist", FALSE)) { - slSafeAddHead(&trackList, gc5BaseOnTheFlyTg(cart)); + slSafeAddHead(&trackList, gc5BaseOnTheFlyTg(cart, sessionVis)); } else { if (rFindTrackWithTable("gc5Base", trackList) == NULL && rFindTrackWithTable("gc5BaseBw", trackList) == NULL) - slSafeAddHead(&trackList, gc5BaseOnTheFlyTg(cart)); + slSafeAddHead(&trackList, gc5BaseOnTheFlyTg(cart, sessionVis)); + } } } if (restrictionEnzymesOk()) { slSafeAddHead(&trackList, cuttersTg()); } if (wikiTrackEnabled(database, NULL)) { addWikiTrack(&trackList); struct sqlConnection *conn = wikiConnect(); if (sqlTableExists(conn, "variome")) addVariomeWikiTrack(&trackList); wikiDisconnect(&conn); }