36 friend class SongPlayerImpl;
39 std::list<Event*>::const_iterator mIterator;
41 TrackPlayer(Track* track);
45 TrackPlayer::TrackPlayer(Track* track)
48 mIterator = mTrack->Begin();
54 friend class SongPlayer;
57 std::vector<TrackPlayer*> mTrackPlayerList;
58 SongPlayerImpl(Song* song)
65 mTrackPlayerList.clear();
69 for (
int i=0;i<mSong->Tracks();i++)
71 mTrackPlayerList.push_back(
72 new TrackPlayer(mSong->GetTrack(i)));
77 bool GetEvent(Event& event,
int& trackId)
82 for (
unsigned int i=0;i<mTrackPlayerList.size();i++)
85 if (mTrackPlayerList[i]->mIterator !=
86 mTrackPlayerList[i]->mTrack->End())
88 Event* ev = *mTrackPlayerList[i]->mIterator;
89 if (smallestId==-1 || ev->GetTicks()<smallest)
91 smallest = ev->GetTicks();
99 event = *(*(mTrackPlayerList[smallestId]->mIterator));
100 trackId = smallestId;
101 mTrackPlayerList[smallestId]->mIterator++;
111 mImpl =
new SongPlayerImpl(song);
126 return mImpl->GetEvent(event,trackId);