summaryrefslogtreecommitdiffstats
path: root/services/audioflinger/AudioFlinger.cpp
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2014-03-13 15:08:51 -0700
committerGlenn Kasten <gkasten@google.com>2014-03-14 14:49:37 -0700
commit3ef14ef30359376006a233f6a21a165d4b65a7df (patch)
tree78947d5e8dee6f3942fdc7891dd40777b21dd7de /services/audioflinger/AudioFlinger.cpp
parent15e5798908ccac14e10c84834eaf08c42931bd06 (diff)
downloadframeworks_av-3ef14ef30359376006a233f6a21a165d4b65a7df.zip
frameworks_av-3ef14ef30359376006a233f6a21a165d4b65a7df.tar.gz
frameworks_av-3ef14ef30359376006a233f6a21a165d4b65a7df.tar.bz2
Make error handling more similar for output and capture
And simplify error case Change-Id: I0bb1ec252945d672cc4cef137977b912f1b23d51
Diffstat (limited to 'services/audioflinger/AudioFlinger.cpp')
-rw-r--r--services/audioflinger/AudioFlinger.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/services/audioflinger/AudioFlinger.cpp b/services/audioflinger/AudioFlinger.cpp
index 9953f64..50179c5 100644
--- a/services/audioflinger/AudioFlinger.cpp
+++ b/services/audioflinger/AudioFlinger.cpp
@@ -622,15 +622,17 @@ sp<IAudioTrack> AudioFlinger::createTrack(
}
- if (lStatus == NO_ERROR) {
- trackHandle = new TrackHandle(track);
- } else {
- // remove local strong reference to Client before deleting the Track so that the Client
- // destructor is called by the TrackBase destructor with mLock held
+ if (lStatus != NO_ERROR) {
+ // remove local strong reference to Client before deleting the Track so that the
+ // Client destructor is called by the TrackBase destructor with mLock held
client.clear();
track.clear();
+ goto Exit;
}
+ // return handle to client
+ trackHandle = new TrackHandle(track);
+
Exit:
*status = lStatus;
return trackHandle;