summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/inputmethodservice/InputMethodService.java5
-rw-r--r--libs/audioflinger/AudioFlinger.cpp10
-rw-r--r--media/libmedia/AudioRecord.cpp10
-rw-r--r--telephony/java/com/android/internal/telephony/RetryManager.java8
-rw-r--r--telephony/tests/telephonytests/src/com/android/internal/telephony/TelephonyUtilsTest.java6
5 files changed, 28 insertions, 11 deletions
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 5d5bd9ccdd91..8c8d3e59b8b4 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -2025,7 +2025,10 @@ public class InputMethodService extends AbstractInputMethodService {
InputConnection ic = getCurrentInputConnection();
mExtractedText = ic == null? null
: ic.getExtractedText(req, InputConnection.GET_EXTRACTED_TEXT_MONITOR);
-
+ if (mExtractedText == null || ic == null) {
+ Log.e(TAG, "Unexpected null in startExtractingText : mExtractedText = "
+ + mExtractedText + ", input connection = " + ic);
+ }
final EditorInfo ei = getCurrentInputEditorInfo();
try {
diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index 2269352e5a32..8089389ffcd6 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -3247,7 +3247,10 @@ bool AudioFlinger::RecordThread::threadLoop()
if (mBytesRead < 0) {
LOGE("Error reading audio input");
if (mActiveTrack->mState == TrackBase::ACTIVE) {
- sleep(1);
+ // Force input into standby so that it tries to
+ // recover at next read attempt
+ mInput->standby();
+ usleep(5000);
}
mRsmpInIndex = mFrameCount;
framesOut = 0;
@@ -3429,7 +3432,10 @@ status_t AudioFlinger::RecordThread::getNextBuffer(AudioBufferProvider::Buffer*
if (mBytesRead < 0) {
LOGE("RecordThread::getNextBuffer() Error reading audio input");
if (mActiveTrack->mState == TrackBase::ACTIVE) {
- sleep(1);
+ // Force input into standby so that it tries to
+ // recover at next read attempt
+ mInput->standby();
+ usleep(5000);
}
buffer->raw = 0;
buffer->frameCount = 0;
diff --git a/media/libmedia/AudioRecord.cpp b/media/libmedia/AudioRecord.cpp
index bce33713f6ec..ad037d6e42b4 100644
--- a/media/libmedia/AudioRecord.cpp
+++ b/media/libmedia/AudioRecord.cpp
@@ -552,13 +552,17 @@ ssize_t AudioRecord::read(void* buffer, size_t userSize)
audioBuffer.frameCount = userSize/frameSize();
- // Calling obtainBuffer() with a negative wait count causes
- // an (almost) infinite wait time.
- status_t err = obtainBuffer(&audioBuffer, -1);
+ // By using a wait count corresponding to twice the timeout period in
+ // obtainBuffer() we give a chance to recover once for a read timeout
+ // (if media_server crashed for instance) before returning a length of
+ // 0 bytes read to the client
+ status_t err = obtainBuffer(&audioBuffer, ((2 * MAX_RUN_TIMEOUT_MS) / WAIT_PERIOD_MS));
if (err < 0) {
// out of buffers, return #bytes written
if (err == status_t(NO_MORE_BUFFERS))
break;
+ if (err == status_t(TIMED_OUT))
+ err = 0;
return ssize_t(err);
}
diff --git a/telephony/java/com/android/internal/telephony/RetryManager.java b/telephony/java/com/android/internal/telephony/RetryManager.java
index 385b19101c3b..779f358307ac 100644
--- a/telephony/java/com/android/internal/telephony/RetryManager.java
+++ b/telephony/java/com/android/internal/telephony/RetryManager.java
@@ -153,13 +153,17 @@ public class RetryManager {
}
/**
- * Configure for using string which allow arbitary
+ * Configure for using string which allow arbitrary
* sequences of times. See class comments for the
* string format.
*
- * @return true if successfull
+ * @return true if successful
*/
public boolean configure(String configStr) {
+ // Strip quotes if present.
+ if ((configStr.startsWith("\"") && configStr.endsWith("\""))) {
+ configStr = configStr.substring(1, configStr.length()-1);
+ }
if (DBG) log("configure: '" + configStr + "'");
if (!TextUtils.isEmpty(configStr)) {
diff --git a/telephony/tests/telephonytests/src/com/android/internal/telephony/TelephonyUtilsTest.java b/telephony/tests/telephonytests/src/com/android/internal/telephony/TelephonyUtilsTest.java
index bf0c88b7cc2d..3757017a8ca3 100644
--- a/telephony/tests/telephonytests/src/com/android/internal/telephony/TelephonyUtilsTest.java
+++ b/telephony/tests/telephonytests/src/com/android/internal/telephony/TelephonyUtilsTest.java
@@ -146,15 +146,15 @@ public class TelephonyUtilsTest extends TestCase {
}
/**
- * Test string configuration using all options.
+ * Test string configuration using all options and with quotes.
*/
@SmallTest
public void testRetryManageString() throws Exception {
RetryManager rm = new RetryManager();
int time;
- assertTrue(rm.configure("max_retries=4,"
- + "default_randomization=100,1000, 2000 :200 , 3000"));
+ assertTrue(rm.configure(
+ "\"max_retries=4, default_randomization=100,1000, 2000 :200 , 3000\""));
assertTrue(rm.isRetryNeeded());
time = rm.getRetryTimer();
assertTrue((time >= 1000) && (time < 1100));