From 8d4a88cebaa88389c2d4999b39ec31eba0cde3c1 Mon Sep 17 00:00:00 2001
From: Dibyendu Roy <dibyen@codeaurora.org>
Date: Thu, 3 Dec 2015 12:21:53 +0530
Subject: [PATCH] FM: Fix ANR due to incorrect error handling in stopRecording

stopRecording() API gets called from onRecordingStopped() callback
function. As a result, when recording can't be stopped successfully
in error scenarios, stopRecording() gets called in loop.

This fix removes the call stopRecording() from callback function and
does the required UI update.

CRs-Fixed: 943288
Change-Id: I0e2ea2adeb0c603f16541d04a5a244bc1fcd51d7
---
 fmapp2/src/com/caf/fmradio/FMRadio.java | 20 +++++++++-----------
 1 file changed, 9 insertions(+), 11 deletions(-)

diff --git a/fmapp2/src/com/caf/fmradio/FMRadio.java b/fmapp2/src/com/caf/fmradio/FMRadio.java
index b025d4f..ff48847 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadio.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadio.java
@@ -1811,15 +1811,6 @@ public class FMRadio extends Activity
    }
 
    private void stopRecording() {
-       mRecording = false;
-       DebugToasts("Stopped Recording", Toast.LENGTH_SHORT);
-       if(null != mRecordUpdateHandlerThread) {
-          mRecordUpdateHandlerThread.interrupt();
-       }
-       if(null != mRecordingMsgTV) {
-          mRecordingMsgTV.setText("");
-          setRecordingStartImage();
-       }
        if (mService != null) {
            try {
               mService.stopRecording();
@@ -1827,7 +1818,6 @@ public class FMRadio extends Activity
               e.printStackTrace();
            }
         }
-        invalidateOptionsMenu();
    }
 
    private boolean isRecording() {
@@ -3155,7 +3145,15 @@ public class FMRadio extends Activity
       }
       public void onRecordingStopped() {
          Log.d(LOGTAG, "mServiceCallbacks.onRecordingStopped:");
-         stopRecording();
+         mRecording = false;
+         if(null != mRecordUpdateHandlerThread) {
+            mRecordUpdateHandlerThread.interrupt();
+         }
+         if(null != mRecordingMsgTV) {
+            mRecordingMsgTV.setText("");
+            setRecordingStartImage();
+         }
+         invalidateOptionsMenu();
       }
       public void onRecordingStarted()
       {
-- 
GitLab