diff options
author | Eric Laurent <elaurent@google.com> | 2013-11-15 13:13:41 -0800 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2013-11-15 13:13:41 -0800 |
commit | 731076cc7857fe322eed018569a2a67f6eac0e54 (patch) | |
tree | 1aa3b6cdcd6fde4ac68d632eb0d94b2f3e3a4307 /services | |
parent | b4213a1252c23115f3fac77101adb33a9c6b9423 (diff) | |
parent | 06d6254823b8f7a46690369e57b5f149c94c9f65 (diff) | |
download | frameworks_av-731076cc7857fe322eed018569a2a67f6eac0e54.zip frameworks_av-731076cc7857fe322eed018569a2a67f6eac0e54.tar.gz frameworks_av-731076cc7857fe322eed018569a2a67f6eac0e54.tar.bz2 |
am 06d62548: am d7e59228: audioflinger: do not use raw pointer for tracks
* commit '06d6254823b8f7a46690369e57b5f149c94c9f65':
audioflinger: do not use raw pointer for tracks
Diffstat (limited to 'services')
-rw-r--r-- | services/audioflinger/Threads.cpp | 14 | ||||
-rw-r--r-- | services/audioflinger/Threads.h | 2 |
2 files changed, 8 insertions, 8 deletions
diff --git a/services/audioflinger/Threads.cpp b/services/audioflinger/Threads.cpp index e6d3a4d..4e23129 100644 --- a/services/audioflinger/Threads.cpp +++ b/services/audioflinger/Threads.cpp @@ -3946,8 +3946,7 @@ AudioFlinger::OffloadThread::OffloadThread(const sp<AudioFlinger>& audioFlinger, : DirectOutputThread(audioFlinger, output, id, device, OFFLOAD), mHwPaused(false), mFlushPending(false), - mPausedBytesRemaining(0), - mPreviousTrack(NULL) + mPausedBytesRemaining(0) { //FIXME: mStandby should be set to true by ThreadBase constructor mStandby = true; @@ -4041,8 +4040,9 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr } if (last) { - if (mPreviousTrack != NULL) { - if (track != mPreviousTrack) { + sp<Track> previousTrack = mPreviousTrack.promote(); + if (previousTrack != 0) { + if (track != previousTrack.get()) { // Flush any data still being written from last track mBytesRemaining = 0; if (mPausedBytesRemaining) { @@ -4053,13 +4053,13 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::OffloadThread::prepareTr // Invalidate is a bit drastic - would be more efficient // to have a flag to tell client that some of the // previously written data was lost - mPreviousTrack->invalidate(); + previousTrack->invalidate(); } // flush data already sent to the DSP if changing audio session as audio // comes from a different source. Also invalidate previous track to force a // seek when resuming. - if (mPreviousTrack->sessionId() != track->sessionId()) { - mPreviousTrack->invalidate(); + if (previousTrack->sessionId() != track->sessionId()) { + previousTrack->invalidate(); mFlushPending = true; } } diff --git a/services/audioflinger/Threads.h b/services/audioflinger/Threads.h index 43e335d..d31009e 100644 --- a/services/audioflinger/Threads.h +++ b/services/audioflinger/Threads.h @@ -764,7 +764,7 @@ private: bool mFlushPending; size_t mPausedWriteLength; // length in bytes of write interrupted by pause size_t mPausedBytesRemaining; // bytes still waiting in mixbuffer after resume - Track *mPreviousTrack; // used to detect track switch + wp<Track> mPreviousTrack; // used to detect track switch }; class AsyncCallbackThread : public Thread { |