Ignore:
Timestamp:
10/10/08 21:31:39 (16 years ago)
Author:
bjn8
Message:

Lots of flaws in threading fixed. Several bad states gone - playback more interactive now

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src_apollo/org/apollo/audio/util/MultiTrackPlaybackController.java

    r315 r363  
    223223                        // Can get many of these over time in one playback call... so make sure that a event is raised
    224224                        // on the first event received...
     225                        System.out.println("MULTI ApolloSubjectChangedEvent.PLAYBACK_STARTED");
    225226                        if (isPlaybackPending) {
    226227                                isPlaybackPending = false;
     
    232233                       
    233234                        // Keep track of what is/isn't playing. Note that currentTrackSequences is cleared explicity
    234                         // event before stop events occur when playback is commences while already playing back
     235                        // before stop events occur when playback is commences while already playing back
    235236                case ApolloSubjectChangedEvent.PLAYBACK_STOPPED:
    236                        
     237
     238                        System.out.println("MULTI ApolloSubjectChangedEvent.PLAYBACK_STOPPED");
    237239                        if (currentTrackSequences != null && !currentTrackSequences.isEmpty()) {
    238240                               
    239241                                currentTrackSequences.remove(source);
     242                                //if (currentTrackSequences.remove(source)) isPlaybackPending = false;
    240243                               
    241244                                ts = (TrackSequence)source;
     
    596599                                && isCurrentPlaybackSubject(rootFrameName, masterMixID)) {
    597600
    598                         // Notify listener that load phase has instnatly completed
     601                        // Notify listener that load phase has instantly completed
    599602                        notifyListeners(loadListeners, MultitrackLoadListener.LOAD_COMPLETE, null, false);
    600603
     
    680683
    681684                assert(!isPlaying());
    682                 assert(!isPlaybackPending);
    683685                assert(loadListeners != null);
    684686                assert(!loadListeners.isEmpty());
     687                assert(!isPlaybackPending);
    685688               
    686689                startFramePosition = startFrame;
     
    11411144                                        loadFinished = true;
    11421145                                }
     1146
     1147
     1148                                // Notify listener that load phase has completed
     1149                                notifyListeners(loadListeners, MultitrackLoadListener.LOAD_COMPLETE, null, false);
    11431150                               
    11441151                                // Remmember root frame of new playback
    11451152                                currentODFrame = rootODFrame;
    1146                                
     1153
    11471154                                commencePlayback(relativeStartFrame, startFrame, endFrame, loadListeners);
    11481155                               
Note: See TracChangeset for help on using the changeset viewer.