diff options
| author | 2012-11-09 17:34:14 -0800 | |
|---|---|---|
| committer | 2012-11-09 17:34:14 -0800 | |
| commit | 83e185c29579da36e0ba77f65b95b74263e27dc0 (patch) | |
| tree | c57244e2c9f9c683d5eb9e6cda1b8095dfda4913 | |
| parent | 9368f0b1b547140195ee5c57f12df39ba6c794cb (diff) | |
Update ImageProcessing test.
Add async filtering.
Change-Id: I4e32a9b1fe9221b09a7d1433b3da11a5e422d911
3 files changed, 84 insertions, 3 deletions
diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java index 445751e13cb5..c1f0d2a1e17b 100644 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java +++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/ImageProcessingActivity.java @@ -18,6 +18,8 @@ package com.android.rs.image; import android.app.Activity; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.graphics.BitmapFactory; import android.graphics.Bitmap; import android.graphics.Canvas; @@ -82,11 +84,37 @@ public class ImageProcessingActivity extends Activity private boolean mDoingBenchmark; private TestBase mTest; + private int mRunCount; public void updateDisplay() { + mHandler.sendMessage(Message.obtain()); + } + + private Handler mHandler = new Handler() { + // Allow the filter to complete without blocking the UI + // thread. When the message arrives that the op is complete + // we will either mark completion or start a new filter if + // more work is ready. Either way, display the result. + @Override + public void handleMessage(Message msg) { mTest.updateBitmap(mBitmapOut); mDisplayView.invalidate(); - } + + boolean doTest = false; + synchronized(this) { + if (mRunCount > 0) { + mRunCount--; + if (mRunCount > 0) { + doTest = true; + } + } + } + if (doTest) { + mTest.runTestSendMessage(); + } + } + + }; public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { if (fromUser) { @@ -103,8 +131,18 @@ public class ImageProcessingActivity extends Activity mTest.onBar5Changed(progress); } - mTest.runTest(); - updateDisplay(); + boolean doTest = false; + synchronized(this) { + if (mRunCount == 0) { + doTest = true; + mRunCount = 1; + } else { + mRunCount = 2; + } + } + if (doTest) { + mTest.runTestSendMessage(); + } } } diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java index bb3f2f3d571e..2c4b3ba3b8a5 100644 --- a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java +++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/TestBase.java @@ -45,9 +45,22 @@ public class TestBase { protected Allocation mInPixelsAllocation; protected Allocation mInPixelsAllocation2; protected Allocation mOutPixelsAllocation; + protected ScriptC_msg mMessageScript; protected ImageProcessingActivity act; + private class MessageProcessor extends RenderScript.RSMessageHandler { + ImageProcessingActivity mAct; + + MessageProcessor(ImageProcessingActivity act) { + mAct = act; + } + + public void run() { + mAct.updateDisplay(); + } + } + // Override to use UI elements public void onBar1Changed(int progress) { } @@ -96,6 +109,8 @@ public class TestBase { public final void createBaseTest(ImageProcessingActivity ipact, Bitmap b, Bitmap b2) { act = ipact; mRS = RenderScript.create(act); + mRS.setMessageHandler(new MessageProcessor(act)); + mMessageScript = new ScriptC_msg(mRS); mInPixelsAllocation = Allocation.createFromBitmap(mRS, b, Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT); @@ -117,6 +132,11 @@ public class TestBase { public void runTest() { } + final public void runTestSendMessage() { + runTest(); + mMessageScript.invoke_sendMsg(); + } + public void finish() { mRS.finish(); } diff --git a/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs new file mode 100644 index 000000000000..1a19ffc6a4d6 --- /dev/null +++ b/tests/RenderScriptTests/ImageProcessing/src/com/android/rs/image/msg.rs @@ -0,0 +1,23 @@ +/* + * Copyright (C) 2012 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma version(1) +#pragma rs java_package_name(com.android.rs.image) + +void sendMsg() { + rsSendToClientBlocking(0); +} + |