static void DrawAllWTrackNames( struct Tracker_Windows *window, const struct WBlocks *wblock ) { //int num_tracks = ListFindNumElements1(&wblock->wtracks->l); //bool *draw_border = alloca(sizeof(bool) * num_tracks); //memset(draw_border, 0, sizeof(bool) * num_tracks); { const struct WTracks *wtrack1 = get_leftmost_visible_wtrack(wblock); if (wtrack1==NULL) return; const struct WTracks *rightmost_wtrack = get_rightmost_visible_wtrack(wblock, wtrack1); R_ASSERT_RETURN_IF_FALSE(rightmost_wtrack!=NULL); int tracknum1 = wtrack1->l.num; int channelnum1 = ATOMIC_GET(wtrack1->track->midi_channel); struct Patch *patch1 = wtrack1->track->patch; struct WTracks *wtrack2 = NextWTrack(wtrack1); int tracknum2 = tracknum1; for(;;){ int channelnum2 = wtrack2==NULL ? 0 : ATOMIC_GET(wtrack2->track->midi_channel); if (wtrack2==NULL || wtrack2->track->patch==NULL || patch1==NULL || wtrack2->track->patch != patch1 || channelnum2 != channelnum1){ DrawWTrackNames(window, wblock, tracknum1, tracknum2); tracknum1 = tracknum2 = tracknum2+1; channelnum1 = channelnum2; patch1 = wtrack2==NULL ? NULL : wtrack2->track->patch; if (tracknum1 > rightmost_wtrack->l.num) break; } else { tracknum2++; } if (wtrack2==NULL) break; //if (tracknum2 - tracknum1 >= 1) // draw_border[wtrack2->l.num] = true; wtrack2 = NextWTrack(wtrack2); } } }
static void DrawAllWTrackNames( struct Tracker_Windows *window, struct WBlocks *wblock ) { struct WTracks *wtrack1 = (struct WTracks *)ListFindElement1(&wblock->wtracks->l,wblock->left_track); if (wtrack1==NULL) return; int tracknum1 = wtrack1->l.num; int channelnum1 = ATOMIC_GET(wtrack1->track->midi_channel); struct Patch *patch1 = wtrack1->track->patch; struct WTracks *wtrack2 = NextWTrack(wtrack1); int tracknum2 = tracknum1; for(;;){ int channelnum2 = wtrack2==NULL ? 0 : ATOMIC_GET(wtrack2->track->midi_channel); if (wtrack2==NULL || wtrack2->track->patch==NULL || patch1==NULL || wtrack2->track->patch != patch1 || channelnum2 != channelnum1){ DrawWTrackNames(window, wblock, tracknum1, tracknum2); tracknum1 = tracknum2 = tracknum2+1; channelnum1 = channelnum2; patch1 = wtrack2==NULL ? NULL : wtrack2->track->patch; } else { tracknum2++; } if (wtrack2==NULL) break; else wtrack2 = NextWTrack(wtrack2); } }