Merge "FM: FMReceiver not set to NULL for some states" into fm.lnx.2.9.1
diff --git a/fmapp2/src/com/caf/fmradio/FMRadioService.java b/fmapp2/src/com/caf/fmradio/FMRadioService.java
index f36b163..dd25b1d 100644
--- a/fmapp2/src/com/caf/fmradio/FMRadioService.java
+++ b/fmapp2/src/com/caf/fmradio/FMRadioService.java
@@ -2354,13 +2354,14 @@
          }
          else
          {
-            mReceiver = null; // as enable failed no need to disable
+            if ((mReceiver.getFMState() != mReceiver.subPwrLevel_FMRx_Starting) &&
+                            (mReceiver.getFMState() != mReceiver.FMState_Rx_Turned_On)) {
+                mReceiver = null; // as enable failed no need to disable
                               // failure of enable can be because handle
                               // already open which gets effected if
                               // we disable
-            AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
-            audioManager.abandonAudioFocus(mAudioFocusListener);
-            stop();
+                stop();
+            }
          }
 
          return bStatus;
@@ -3384,11 +3385,13 @@
       public void FmRxEvEnableReceiver()
       {
          Log.d(LOGTAG, "FmRxEvEnableReceiver");
-         mReceiver.setRawRdsGrpMask();
-         if (mReceiver != null && mReceiver.isCherokeeChip()) {
-             synchronized(mEventWaitLock) {
-                 mEventReceived = true;
-                 mEventWaitLock.notify();
+         if (mReceiver != null) {
+             mReceiver.setRawRdsGrpMask();
+             if (mReceiver.isCherokeeChip()) {
+                 synchronized(mEventWaitLock) {
+                     mEventReceived = true;
+                     mEventWaitLock.notify();
+                 }
              }
          }
       }