Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 54950e83 authored by Eric Laurent's avatar Eric Laurent
Browse files

AudioService: more communication mode fix

Do not reset communication mode when an app is not playing or
capturing audio if the app is not the audio mode owner.
In case of dual call situation, a VoIP call can be placed on hold and it
is legit for the app to remain in the mode owner stack but pause
capture and playback.

Bug: 161564483
Test: VoIP call interrupted by Cell call.
Change-Id: Iac5bee9b606e3663b63a4c1c58f9c7a880ab0311
parent 973849d0
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -6735,14 +6735,17 @@ public class AudioService extends IAudioService.Stub
                        if (msg.obj == null) {
                            break;
                        }
                        // If the app corresponding to this mode death handler object is not
                        // capturing or playing audio anymore after 3 seconds, remove it
                        // from the stack. Otherwise, check again in 3 seconds.
                        // If no other app is currently owning the audio mode and
                        // the app corresponding to this mode death handler object is still in the
                        // mode owner stack but not capturing or playing audio after 3 seconds,
                        // remove it from the stack.
                        // Otherwise, check again in 3 seconds.
                        SetModeDeathHandler h = (SetModeDeathHandler) msg.obj;
                        if (mSetModeDeathHandlers.indexOf(h) < 0) {
                            break;
                        }
                        if (mRecordMonitor.isRecordingActiveForUid(h.getUid())
                        if (getModeOwnerUid() != h.getUid()
                                || mRecordMonitor.isRecordingActiveForUid(h.getUid())
                                || mPlaybackMonitor.isPlaybackActiveForUid(h.getUid())) {
                            sendMsg(mAudioHandler,
                                    MSG_CHECK_MODE_FOR_UID,