summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGlenn Kasten <gkasten@google.com>2015-05-13 09:12:30 -0700
committerGlenn Kasten <gkasten@google.com>2015-05-18 13:30:52 -0700
commit2dc0674aba6242c677365b675795773738397ab9 (patch)
tree42d12210754e04a3b68e2e2398d5ba0e022af802
parent2523b697aa1fda376c2ccd72680394d359acbd3f (diff)
downloadandroid_frameworks_wilhelm-2dc0674aba6242c677365b675795773738397ab9.tar.gz
android_frameworks_wilhelm-2dc0674aba6242c677365b675795773738397ab9.tar.bz2
android_frameworks_wilhelm-2dc0674aba6242c677365b675795773738397ab9.zip
Clear mAudioRecord on set() failure
All uses to mAudioRecord were already protected by checks for mAudioRecord != 0 Bug: 20818955 Bug: 20890069 Change-Id: I243205b99b198eb1b5a1a027b27cbb7d5aaaa8db
-rw-r--r--src/android/AudioPlayer_to_android.cpp1
-rw-r--r--src/android/AudioRecorder_to_android.cpp10
2 files changed, 8 insertions, 3 deletions
diff --git a/src/android/AudioPlayer_to_android.cpp b/src/android/AudioPlayer_to_android.cpp
index d4927a4..3e84341 100644
--- a/src/android/AudioPlayer_to_android.cpp
+++ b/src/android/AudioPlayer_to_android.cpp
@@ -1542,6 +1542,7 @@ SLresult android_audioPlayer_realize(CAudioPlayer *pAudioPlayer, SLboolean async
android::status_t status = pAudioPlayer->mAudioTrack->initCheck();
if (status != android::NO_ERROR) {
SL_LOGE("AudioTrack::initCheck status %u", status);
+ // FIXME should return a more specific result depending on status
result = SL_RESULT_CONTENT_UNSUPPORTED;
pAudioPlayer->mAudioTrack.clear();
return result;
diff --git a/src/android/AudioRecorder_to_android.cpp b/src/android/AudioRecorder_to_android.cpp
index 2ce1d05..af88815 100644
--- a/src/android/AudioRecorder_to_android.cpp
+++ b/src/android/AudioRecorder_to_android.cpp
@@ -409,7 +409,8 @@ SLresult android_audioRecorder_realize(CAudioRecorder* ar, SLboolean async) {
// initialize platform-specific CAudioRecorder fields
ar->mAudioRecord = new android::AudioRecord(android::String16());
- ar->mAudioRecord->set(ar->mRecordSource, // source
+ android::status_t status = ar->mAudioRecord->set(
+ ar->mRecordSource, // source
sles_to_android_sampleRate(ar->mSampleRateMilliHz), // sample rate in Hertz
AUDIO_FORMAT_PCM_16_BIT, //FIXME use format from buffer queue sink
sles_to_android_channelMaskIn(ar->mNumChannels, 0 /*no channel mask*/),
@@ -425,9 +426,12 @@ SLresult android_audioRecorder_realize(CAudioRecorder* ar, SLboolean async) {
// transfer type
policy); // audio_input_flags_t
- if (android::NO_ERROR != ar->mAudioRecord->initCheck()) {
- SL_LOGE("android_audioRecorder_realize(%p) error creating AudioRecord object", ar);
+ if (android::NO_ERROR != status) {
+ SL_LOGE("android_audioRecorder_realize(%p) error creating AudioRecord object; status %d",
+ ar, status);
+ // FIXME should return a more specific result depending on status
result = SL_RESULT_CONTENT_UNSUPPORTED;
+ ar->mAudioRecord.clear();
}
#ifdef MONITOR_RECORDING