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

Commit 559393ee authored by Stefan Andonian's avatar Stefan Andonian
Browse files

Allow DumpViewHierarchy cmd to be interruptible without breaking.

Bug: 242867462
Test: Cancelled a dump cmd midway, then immediately ran a successful
one.

Change-Id: Ic27cbc0acb3ca55aaabb8ce6d007ea3a67510b3f
parent eff11167
Loading
Loading
Loading
Loading
+11 −1
Original line number Original line Diff line number Diff line
@@ -1569,7 +1569,17 @@ public class LauncherAppsService extends SystemService {
         */
         */
        private void forEachViewCaptureWindow(
        private void forEachViewCaptureWindow(
                @NonNull BiConsumer<String, InputStream> outputtingConsumer) {
                @NonNull BiConsumer<String, InputStream> outputtingConsumer) {
            for (int i = mDumpCallbacks.beginBroadcast() - 1; i >= 0; i--) {
            int i;
            try {
                i = mDumpCallbacks.beginBroadcast() - 1;
            } catch (IllegalStateException e) {
                Log.d(TAG, "The previous broadcast must have been killed, because a broadcast"
                        + "was occurring when it should not have been. Calling finishBroadcast and "
                        + "retrying.", e);
                mDumpCallbacks.finishBroadcast();
                i = mDumpCallbacks.beginBroadcast() - 1;
            }
            for (; i >= 0; i--) {
                String packageName = (String) mDumpCallbacks.getBroadcastCookie(i);
                String packageName = (String) mDumpCallbacks.getBroadcastCookie(i);
                String fileName = WM_TRACE_DIR + packageName + "_" + i + VC_FILE_SUFFIX;
                String fileName = WM_TRACE_DIR + packageName + "_" + i + VC_FILE_SUFFIX;