summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChia-I Wu <olv@google.com>2017-02-10 08:11:55 -0800
committerChia-I Wu <olv@google.com>2017-02-10 12:23:45 -0800
commit4a71a73843d974490c0c8ccdf7318bbc54b6bd42 (patch)
tree4dfc0c36f65905fed1ef96a7bd2c278326f2bb57
parent71b3bafa59e2a2637536a283cc30e5ae385708f1 (diff)
downloadandroid_hardware_interfaces-4a71a73843d974490c0c8ccdf7318bbc54b6bd42.tar.gz
android_hardware_interfaces-4a71a73843d974490c0c8ccdf7318bbc54b6bd42.tar.bz2
android_hardware_interfaces-4a71a73843d974490c0c8ccdf7318bbc54b6bd42.zip
graphics: use FIFO scheduler in IComposer
Make IComposer default implementation use the same process scheduler as SurfaceFlinger does. Bug: 35210697 Test: manual Change-Id: Ie2ebe1d3fd26505984d9f6c33d63b5db36b0b64a
-rw-r--r--graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc1
-rw-r--r--graphics/composer/2.1/default/service.cpp10
2 files changed, 11 insertions, 0 deletions
diff --git a/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc b/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc
index fc21d59e1..9548d4174 100644
--- a/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc
+++ b/graphics/composer/2.1/default/android.hardware.graphics.composer@2.1-service.rc
@@ -2,4 +2,5 @@ service hwcomposer-2-1 /system/bin/hw/android.hardware.graphics.composer@2.1-ser
class hal
user system
group graphics drmrpc readproc
+ capabilities SYS_NICE
onrestart restart surfaceflinger
diff --git a/graphics/composer/2.1/default/service.cpp b/graphics/composer/2.1/default/service.cpp
index a31decd3a..656673e67 100644
--- a/graphics/composer/2.1/default/service.cpp
+++ b/graphics/composer/2.1/default/service.cpp
@@ -16,6 +16,8 @@
#define LOG_TAG "android.hardware.graphics.composer@2.1-service"
+#include <sched.h>
+
#include <android/hardware/graphics/composer/2.1/IComposer.h>
#include <binder/ProcessState.h>
@@ -29,5 +31,13 @@ int main() {
android::ProcessState::self()->setThreadPoolMaxThreadCount(4);
android::ProcessState::self()->startThreadPool();
+ // same as SF main thread
+ struct sched_param param = {0};
+ param.sched_priority = 2;
+ if (sched_setscheduler(0, SCHED_FIFO | SCHED_RESET_ON_FORK,
+ &param) != 0) {
+ ALOGE("Couldn't set SCHED_FIFO: %d", errno);
+ }
+
return defaultPassthroughServiceImplementation<IComposer>("hwcomposer");
}