summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSascha Haeberling <haeberling@google.com>2015-07-24 03:08:55 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-07-24 03:08:55 +0000
commit471cd0b4dc45863b708db99596394ee9b080b755 (patch)
tree7fb36bb4227f81b2ecc23b1421f6e59496204c08
parent5619957164de0211e7a8fde5cae199ae4e4cb874 (diff)
parentf0c8509b1b59e89c881bfb59ddcf2dd23c90a152 (diff)
downloadandroid_packages_apps_Camera2-471cd0b4dc45863b708db99596394ee9b080b755.tar.gz
android_packages_apps_Camera2-471cd0b4dc45863b708db99596394ee9b080b755.tar.bz2
android_packages_apps_Camera2-471cd0b4dc45863b708db99596394ee9b080b755.zip
am f0c8509b: am 1aaec6c0: am ae474d0b: [Haleakala] Change JPEG compression thread priority to BACKGROUND - 1.
* commit 'f0c8509b1b59e89c881bfb59ddcf2dd23c90a152': [Haleakala] Change JPEG compression thread priority to BACKGROUND - 1.
-rw-r--r--src/com/android/camera/async/AndroidPriorityThread.java28
-rw-r--r--src/com/android/camera/processing/imagebackend/ImageBackend.java30
2 files changed, 44 insertions, 14 deletions
diff --git a/src/com/android/camera/async/AndroidPriorityThread.java b/src/com/android/camera/async/AndroidPriorityThread.java
new file mode 100644
index 000000000..f12bcb210
--- /dev/null
+++ b/src/com/android/camera/async/AndroidPriorityThread.java
@@ -0,0 +1,28 @@
+
+package com.android.camera.async;
+
+/**
+ * A thread that runs at the given Android thread priority.
+ */
+public class AndroidPriorityThread extends Thread {
+ private final int mAndroidThreadPriority;
+
+ /**
+ * Constructs the new thread.
+ *
+ * @param androidThreadPriority the android priority the thread should run
+ * at. This has to be one of the
+ * android.os.Process.THREAD_PRIORITY_* values.
+ * @param runnable the runnable to run at this thread priority.
+ */
+ public AndroidPriorityThread(int androidThreadPriority, Runnable runnable) {
+ super(runnable);
+ mAndroidThreadPriority = androidThreadPriority;
+ }
+
+ @Override
+ public void run() {
+ android.os.Process.setThreadPriority(mAndroidThreadPriority);
+ super.run();
+ }
+}
diff --git a/src/com/android/camera/processing/imagebackend/ImageBackend.java b/src/com/android/camera/processing/imagebackend/ImageBackend.java
index 3297ff573..fdfeea578 100644
--- a/src/com/android/camera/processing/imagebackend/ImageBackend.java
+++ b/src/com/android/camera/processing/imagebackend/ImageBackend.java
@@ -16,6 +16,9 @@
package com.android.camera.processing.imagebackend;
+import android.os.Process;
+
+import com.android.camera.async.AndroidPriorityThread;
import com.android.camera.debug.Log;
import com.android.camera.processing.ProcessingTaskConsumer;
import com.android.camera.processing.memory.ByteBufferDirectPool;
@@ -84,16 +87,18 @@ import java.util.concurrent.locks.ReentrantLock;
* already been completed should return immediately on its process call.
*/
public class ImageBackend implements ImageConsumer, ImageTaskManager {
- private final static Log.Tag TAG = new Log.Tag("ImageBackend");
-
- protected static final int FAST_THREAD_PRIORITY = Thread.MAX_PRIORITY;
- protected static final int AVERAGE_THREAD_PRIORITY = Thread.NORM_PRIORITY - 1;
- protected static final int SLOW_THREAD_PRIORITY = Thread.MIN_PRIORITY;
+ private static final Log.Tag TAG = new Log.Tag("ImageBackend");
protected static final int NUM_THREADS_FAST = 2;
protected static final int NUM_THREADS_AVERAGE = 2;
protected static final int NUM_THREADS_SLOW = 2;
+ private static final int FAST_THREAD_PRIORITY = Process.THREAD_PRIORITY_DISPLAY;
+ private static final int AVERAGE_THREAD_PRIORITY = Process.THREAD_PRIORITY_DEFAULT
+ + Process.THREAD_PRIORITY_LESS_FAVORABLE;
+ private static final int SLOW_THREAD_PRIORITY = Process.THREAD_PRIORITY_BACKGROUND
+ + Process.THREAD_PRIORITY_MORE_FAVORABLE;
+
private static final int IMAGE_BACKEND_HARD_REF_POOL_SIZE = 2;
protected final ProcessingTaskConsumer mProcessingTaskConsumer;
@@ -920,28 +925,25 @@ public class ImageBackend implements ImageConsumer, ImageTaskManager {
// Thread factories for a default constructor
private class FastThreadFactory implements ThreadFactory {
-
+ @Override
public Thread newThread(Runnable r) {
- Thread t = new Thread(r);
- t.setPriority(FAST_THREAD_PRIORITY);
+ Thread t = new AndroidPriorityThread(FAST_THREAD_PRIORITY, r);
return t;
}
}
private class AverageThreadFactory implements ThreadFactory {
-
+ @Override
public Thread newThread(Runnable r) {
- Thread t = new Thread(r);
- t.setPriority(AVERAGE_THREAD_PRIORITY);
+ Thread t = new AndroidPriorityThread(AVERAGE_THREAD_PRIORITY, r);
return t;
}
}
private class SlowThreadFactory implements ThreadFactory {
-
+ @Override
public Thread newThread(Runnable r) {
- Thread t = new Thread(r);
- t.setPriority(SLOW_THREAD_PRIORITY);
+ Thread t = new AndroidPriorityThread(SLOW_THREAD_PRIORITY, r);
return t;
}
}