diff options
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/MidiFile.cpp | 8 | ||||
-rw-r--r-- | media/libmediaplayerservice/MidiFile.h | 25 |
2 files changed, 26 insertions, 7 deletions
diff --git a/media/libmediaplayerservice/MidiFile.cpp b/media/libmediaplayerservice/MidiFile.cpp index 85b1f9d..4946956 100644 --- a/media/libmediaplayerservice/MidiFile.cpp +++ b/media/libmediaplayerservice/MidiFile.cpp @@ -86,7 +86,8 @@ MidiFile::MidiFile() : // create playback thread { Mutex::Autolock l(mMutex); - createThreadEtc(renderThread, this, "midithread", ANDROID_PRIORITY_AUDIO); + mThread = new MidiFileThread(this); + mThread->run("midithread", ANDROID_PRIORITY_AUDIO); mCondition.wait(mMutex); ALOGV("thread started"); } @@ -427,11 +428,6 @@ status_t MidiFile::createOutputTrack() { return NO_ERROR; } -int MidiFile::renderThread(void* p) { - - return ((MidiFile*)p)->render(); -} - int MidiFile::render() { EAS_RESULT result = EAS_FAILURE; EAS_I32 count; diff --git a/media/libmediaplayerservice/MidiFile.h b/media/libmediaplayerservice/MidiFile.h index 3469389..2a0dcf9 100644 --- a/media/libmediaplayerservice/MidiFile.h +++ b/media/libmediaplayerservice/MidiFile.h @@ -24,6 +24,7 @@ namespace android { +// Note that the name MidiFile is misleading; this actually represents a MIDI file player class MidiFile : public MediaPlayerInterface { public: MidiFile(); @@ -65,7 +66,6 @@ public: private: status_t createOutputTrack(); status_t reset_nosync(); - static int renderThread(void*); int render(); void updateState(){ EAS_State(mEasData, mEasHandle, &mState); } @@ -84,6 +84,29 @@ private: bool mPaused; volatile bool mRender; pid_t mTid; + + class MidiFileThread : public Thread { + public: + MidiFileThread(MidiFile *midiPlayer) : mMidiFile(midiPlayer) { + } + + protected: + virtual ~MidiFileThread() {} + + private: + MidiFile *mMidiFile; + + bool threadLoop() { + int result; + result = mMidiFile->render(); + return false; + } + + MidiFileThread(const MidiFileThread &); + MidiFileThread &operator=(const MidiFileThread &); + }; + + sp<MidiFileThread> mThread; }; }; // namespace android |