diff options
| author | Glenn Kasten <gkasten@google.com> | 2012-08-07 09:44:19 -0700 |
|---|---|---|
| committer | Glenn Kasten <gkasten@google.com> | 2012-08-07 15:13:42 -0700 |
| commit | a997e7a7c5aa2fc7e95316218316f8b7b98786ba (patch) | |
| tree | 4f98e352833c4de61728588cacc08d40d1d01778 | |
| parent | 8da4cd7d706d9f551bf2d08cd8b61907a10cd38d (diff) | |
| download | frameworks_av-a997e7a7c5aa2fc7e95316218316f8b7b98786ba.zip frameworks_av-a997e7a7c5aa2fc7e95316218316f8b7b98786ba.tar.gz frameworks_av-a997e7a7c5aa2fc7e95316218316f8b7b98786ba.tar.bz2 | |
Revert "Swap the order of creating IAudioTrack and thread"
This reverts commit 5d464eb0b8cffb994a754ff108795e858a882414.
It caused the wrong thread ID -1 to be passed to IAudioFlinger::createTrack().
Change-Id: Ic221d2bb4af572d3d2d752af19238c52f6728e3a
| -rw-r--r-- | include/media/AudioTrack.h | 2 | ||||
| -rw-r--r-- | media/libmedia/AudioTrack.cpp | 15 |
2 files changed, 11 insertions, 6 deletions
diff --git a/include/media/AudioTrack.h b/include/media/AudioTrack.h index 4488ce4..26a25b0 100644 --- a/include/media/AudioTrack.h +++ b/include/media/AudioTrack.h @@ -473,7 +473,7 @@ protected: friend class AudioTrack; virtual bool threadLoop(); AudioTrack& mReceiver; - virtual ~AudioTrackThread(); + ~AudioTrackThread(); Mutex mMyLock; // Thread::mLock is private Condition mMyCond; // Thread::mThreadExitedCondition is private bool mPaused; // whether thread is currently paused diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp index 0ca035f..73d396e 100644 --- a/media/libmedia/AudioTrack.cpp +++ b/media/libmedia/AudioTrack.cpp @@ -278,6 +278,11 @@ status_t AudioTrack::set( mFlags = flags; mCbf = cbf; + if (cbf != NULL) { + mAudioTrackThread = new AudioTrackThread(*this, threadCanCallJava); + mAudioTrackThread->run("AudioTrack", ANDROID_PRIORITY_AUDIO, 0 /*stack*/); + } + // create the IAudioTrack status_t status = createTrack_l(streamType, sampleRate, @@ -287,15 +292,15 @@ status_t AudioTrack::set( flags, sharedBuffer, output); + if (status != NO_ERROR) { + if (mAudioTrackThread != 0) { + mAudioTrackThread->requestExit(); + mAudioTrackThread.clear(); + } return status; } - if (cbf != NULL) { - mAudioTrackThread = new AudioTrackThread(*this, threadCanCallJava); - mAudioTrackThread->run("AudioTrack", ANDROID_PRIORITY_AUDIO); - } - mStatus = NO_ERROR; mStreamType = streamType; |
