diff options
author | Glenn Kasten <gkasten@google.com> | 2015-05-13 09:12:30 -0700 |
---|---|---|
committer | Glenn Kasten <gkasten@google.com> | 2015-05-18 13:30:52 -0700 |
commit | 2dc0674aba6242c677365b675795773738397ab9 (patch) | |
tree | 42d12210754e04a3b68e2e2398d5ba0e022af802 | |
parent | 2523b697aa1fda376c2ccd72680394d359acbd3f (diff) | |
download | android_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.cpp | 1 | ||||
-rw-r--r-- | src/android/AudioRecorder_to_android.cpp | 10 |
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 |