diff --git a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerHw2Enforcer.java b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerHw2Enforcer.java index 761858ccd2385..eced8940947ac 100644 --- a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerHw2Enforcer.java +++ b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerHw2Enforcer.java @@ -21,6 +21,7 @@ import android.hardware.soundtrigger.V2_1.ISoundTriggerHwCallback; import android.hardware.soundtrigger.V2_3.ModelParameterRange; import android.hardware.soundtrigger.V2_3.Properties; import android.hardware.soundtrigger.V2_3.RecognitionConfig; +import android.media.soundtrigger_middleware.Status; import android.os.DeadObjectException; import android.os.IHwBinder; import android.os.RemoteException; @@ -195,10 +196,10 @@ public class SoundTriggerHw2Enforcer implements ISoundTriggerHw2 { if (e.getCause() instanceof DeadObjectException) { // Server is dead, no need to reboot. Log.e(TAG, "HAL died"); - } else { - Log.e(TAG, "Exception caught from HAL, rebooting HAL"); - rebootHal(); + throw new RecoverableException(Status.DEAD_OBJECT); } + Log.e(TAG, "Exception caught from HAL, rebooting HAL"); + rebootHal(); throw e; } diff --git a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerModule.java b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerModule.java index 5a587cc9764c8..02d978dfdf994 100644 --- a/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerModule.java +++ b/services/core/java/com/android/server/soundtrigger_middleware/SoundTriggerModule.java @@ -184,11 +184,13 @@ class SoundTriggerModule implements IHwBinder.DeathRecipient { @Override public void serviceDied(long cookie) { Log.w(TAG, String.format("Underlying HAL driver died.")); - List callbacks = new ArrayList<>(mActiveSessions.size()); + List callbacks; synchronized (this) { + callbacks = new ArrayList<>(mActiveSessions.size()); for (Session session : mActiveSessions) { callbacks.add(session.moduleDied()); } + mActiveSessions.clear(); reset(); } // Trigger the callbacks outside of the lock to avoid deadlocks. @@ -431,7 +433,6 @@ class SoundTriggerModule implements IHwBinder.DeathRecipient { */ private ISoundTriggerCallback moduleDied() { ISoundTriggerCallback callback = mCallback; - removeSession(this); mCallback = null; return callback; }