summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorEric Laurent <elaurent@google.com>2013-11-15 13:13:41 -0800
committerAndroid Git Automerger <android-git-automerger@android.com>2013-11-15 13:13:41 -0800
commit731076cc7857fe322eed018569a2a67f6eac0e54 (patch)
tree1aa3b6cdcd6fde4ac68d632eb0d94b2f3e3a4307 /services
parentb4213a1252c23115f3fac77101adb33a9c6b9423 (diff)
parent06d6254823b8f7a46690369e57b5f149c94c9f65 (diff)
downloadframeworks_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.cpp14
-rw-r--r--services/audioflinger/Threads.h2
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 {