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

Commit 14800df7 authored by Tyler Gunn's avatar Tyler Gunn
Browse files

Move CallAudioWatchdog audio callbacks onto a background handler.

To avoid ANRs or janmk by invoking these on the main thread, move to a
background handler instead.

Flag: com.android.server.telecom.flags.enable_call_audio_watchdog
Test: re-run perfetto A/B test to verify no jank regression.
Bug: 390928121
Change-Id: I626f86dfe761c7bbd7a8260337130531a0a5b9b6
parent 9de798e9
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -490,6 +490,9 @@ public class CallsManager extends Call.ListenerBase
    private final ConnectionServiceFocusManager mConnectionSvrFocusMgr;
    /* Handler tied to thread in which CallManager was initialized. */
    private final Handler mHandler = new Handler(Looper.getMainLooper());
    private final HandlerThread mHandlerThread = new HandlerThread("telecomAudioCallbacks",
            android.os.Process.THREAD_PRIORITY_BACKGROUND);
    private final Handler mAudioCallbackHandler;
    private final EmergencyCallHelper mEmergencyCallHelper;
    private final RoleManagerAdapter mRoleManagerAdapter;
    private final VoipCallMonitor mVoipCallMonitor;
@@ -657,6 +660,8 @@ public class CallsManager extends Call.ListenerBase
        mEmergencyCallDiagnosticLogger = emergencyCallDiagnosticLogger;
        mIncomingCallFilterGraphProvider = incomingCallFilterGraphProvider;
        if (featureFlags.enableCallAudioWatchdog()) {
            mHandlerThread.start();
            mAudioCallbackHandler = new Handler(mHandlerThread.getLooper());
            mCallAudioWatchDog = new CallAudioWatchdog(
                    mContext.getSystemService(AudioManager.class),
                    new CallAudioWatchdog.PhoneAccountRegistrarProxy() {
@@ -677,9 +682,10 @@ public class CallsManager extends Call.ListenerBase
                                return -1;
                            }
                        }
                    }, clockProxy, mHandler,
                    }, clockProxy, mAudioCallbackHandler,
                    featureFlags.telecomMetricsSupport() ? metricsController : null);
        } else {
            mAudioCallbackHandler = null;
            mCallAudioWatchDog = null;
        }