From 5dc7fa709646799a5207a5d217f70aa02bf4a3aa Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Mon, 11 Mar 2013 20:48:31 -0700 Subject: Add TaskManager API This API can be used to run arbitrary tasks on a pool of worker threads. The number of threads is calculated based on the number of CPU cores available. The API is made of 3 classes: TaskManager Creates and manages the worker threads. Task Describes the work to be done and the type of the output. A task contains a future used to wait for the worker thread to be done computing the result of the task. TaskProcessor The processor dispatches tasks to the TaskManager and is responsible for performing the computation required by each task. A processor will only be asked to process tasks sent to the manager through the processor. A typical use case: class MyTask: Task class MyProcessor: TaskProcessor TaskManager m = new TaskManager(); MyProcessor p = new MyProcessor(m); MyTask t = new MyTask(); p.add(t); // Waits until the result is available MyType result = t->getResult(); Change-Id: I1fe845ba4c49bb0e1b0627ab147f9a861c8e0749 --- .../src/com/android/test/hwui/PathsCacheActivity.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'tests/HwAccelerationTest') diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java index ac8ab1f..9f97311 100644 --- a/tests/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/PathsCacheActivity.java @@ -33,6 +33,7 @@ public class PathsCacheActivity extends Activity { private Path mPath; private final Random mRandom = new Random(); + @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") private final ArrayList mPathList = new ArrayList(); @Override @@ -58,6 +59,19 @@ public class PathsCacheActivity extends Activity { path.cubicTo(-80.0f, 200.0f, 100.0f, 200.0f, 200.0f, 0.0f); } + private static Path makeLargePath() { + Path path = new Path(); + buildLargePath(path); + return path; + } + + private static void buildLargePath(Path path) { + path.moveTo(0.0f, 0.0f); + path.cubicTo(0.0f, 0.0f, 10000.0f, 15000.0f, 10000.0f, 20000.0f); + path.cubicTo(10000.0f, 20000.0f, 5000.0f, 30000.0f, -8000.0f, 20000.0f); + path.cubicTo(-8000.0f, 20000.0f, 10000.0f, 20000.0f, 20000.0f, 0.0f); + } + public class PathsView extends View { private final Paint mMediumPaint; @@ -97,6 +111,9 @@ public class PathsCacheActivity extends Activity { int r = mRandom.nextInt(10); if (r == 5 || r == 3) { mPathList.add(path); + } else if (r == 7) { + path = makeLargePath(); + mPathList.add(path); } canvas.save(); -- cgit v1.1