11f921f0e73765335b4d9f4b95dcf9045e2972b5 galt Tue Jul 26 23:51:51 2011 -0700 possible fix for default visibility of tdb->parent diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c index a29d91f..22ea02b 100644 --- src/hg/hgTracks/hgTracks.c +++ src/hg/hgTracks/hgTracks.c @@ -4402,45 +4402,48 @@ { if (track->visibility != tvHide) { if (isTrackForParallelLoad(track)) { struct paraFetchData *pfd; AllocVar(pfd); pfd->track = track; // need pointer to be stable slAddHead(ppfdList, pfd); track->parallelLoading = TRUE; } struct track *subtrack; for (subtrack=track->subtracks; subtrack; subtrack=subtrack->next) { - if (isSubtrackVisible(subtrack)) - { if (isTrackForParallelLoad(subtrack)) { + if (!subtrack->tdb->parent || subtrack->tdb->parent->visibility != tvHide) + { + if (isSubtrackVisible(subtrack)) + { struct paraFetchData *pfd; AllocVar(pfd); pfd->track = subtrack; // need pointer to be stable slAddHead(ppfdList, pfd); subtrack->parallelLoading = TRUE; } } } } } } +} static pthread_mutex_t pfdMutex = PTHREAD_MUTEX_INITIALIZER; static struct paraFetchData *pfdList = NULL, *pfdRunning = NULL, *pfdDone = NULL, *pfdNeverStarted = NULL; static void *remoteParallelLoad(void *threadParam) /* Each thread loads tracks in parallel until all work is done. */ { pthread_t *pthread = threadParam; struct paraFetchData *pfd = NULL; pthread_detach(*pthread); // this thread will never join back with it's progenitor // Canceled threads that might leave locks behind, // so the theads are detached and will be neither joined nor canceled. boolean allDone = FALSE; while(1) {