From 3bf65c916ce65c06b0920ec4b8f68d3ef6c5e721 Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Mon, 28 Nov 2016 15:06:35 -0800 Subject: Preload2: Add isSingleThreaded Expose whether a UI is single-threaded to avoid spawning threads in actions. Bug: 31961946 Test: manual Change-Id: I37c8daa6a00784e833bad53b8e83ab4417955df7 --- .../src/com/android/preload/actions/AbstractThreadedAction.java | 7 ++++++- .../preload2/src/com/android/preload/actions/RunMonkeyAction.java | 7 ++++++- tools/preload2/src/com/android/preload/ui/IUI.java | 2 ++ tools/preload2/src/com/android/preload/ui/SwingUI.java | 5 +++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/tools/preload2/src/com/android/preload/actions/AbstractThreadedAction.java b/tools/preload2/src/com/android/preload/actions/AbstractThreadedAction.java index fbf83d2e2339..5787d8507230 100644 --- a/tools/preload2/src/com/android/preload/actions/AbstractThreadedAction.java +++ b/tools/preload2/src/com/android/preload/actions/AbstractThreadedAction.java @@ -16,6 +16,7 @@ package com.android.preload.actions; +import com.android.preload.Main; import java.awt.event.ActionEvent; import javax.swing.AbstractAction; @@ -28,7 +29,11 @@ public abstract class AbstractThreadedAction extends AbstractAction implements R @Override public void actionPerformed(ActionEvent e) { - new Thread(this).start(); + if (Main.getUI().isSingleThreaded()) { + run(); + } else { + new Thread(this).start(); + } } } diff --git a/tools/preload2/src/com/android/preload/actions/RunMonkeyAction.java b/tools/preload2/src/com/android/preload/actions/RunMonkeyAction.java index 385e8577b1c8..29464fc7abdf 100644 --- a/tools/preload2/src/com/android/preload/actions/RunMonkeyAction.java +++ b/tools/preload2/src/com/android/preload/actions/RunMonkeyAction.java @@ -58,7 +58,12 @@ public class RunMonkeyAction extends AbstractAction implements DeviceSpecific { if (packages.isEmpty()) { packages = DEFAULT_MONKEY_PACKAGES; } - new Thread(new RunMonkeyRunnable(packages)).start(); + Runnable r = new RunMonkeyRunnable(packages); + if (Main.getUI().isSingleThreaded()) { + r.run(); + } else { + new Thread(r).start(); + } } private class RunMonkeyRunnable implements Runnable { diff --git a/tools/preload2/src/com/android/preload/ui/IUI.java b/tools/preload2/src/com/android/preload/ui/IUI.java index 3c151d90ab0a..9371463e9a79 100644 --- a/tools/preload2/src/com/android/preload/ui/IUI.java +++ b/tools/preload2/src/com/android/preload/ui/IUI.java @@ -18,6 +18,8 @@ public interface IUI { void ready(); + boolean isSingleThreaded(); + Client getSelectedClient(); int getSelectedDataTableRow(); diff --git a/tools/preload2/src/com/android/preload/ui/SwingUI.java b/tools/preload2/src/com/android/preload/ui/SwingUI.java index 1245f2c23d7e..cab3744ad74c 100644 --- a/tools/preload2/src/com/android/preload/ui/SwingUI.java +++ b/tools/preload2/src/com/android/preload/ui/SwingUI.java @@ -53,6 +53,11 @@ public class SwingUI extends JFrame implements IUI { super("Preloaded-classes computation"); } + @Override + public boolean isSingleThreaded() { + return false; + } + @Override public void prepare(ListModel clientListModel, TableModel dataTableModel, List actions) { -- cgit v1.2.3-59-g8ed1b