summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorRicardo Cerqueira <cyanogenmod@cerqueira.org>2012-11-24 23:11:49 +0000
committerRicardo Cerqueira <cyanogenmod@cerqueira.org>2012-11-26 17:46:32 +0000
commit7d283431efffc4402cb1a6cacf5da64729c883bb (patch)
tree40cd1ff7532ee39647d0ff34c7e7194739f9e911 /services
parente657227f88844f31da7f9a11c783c84bdbbc80bd (diff)
downloadframeworks_native-7d283431efffc4402cb1a6cacf5da64729c883bb.zip
frameworks_native-7d283431efffc4402cb1a6cacf5da64729c883bb.tar.gz
frameworks_native-7d283431efffc4402cb1a6cacf5da64729c883bb.tar.bz2
surfaceflinger: Reimplement hwrotation
Change-Id: Ia26bb36b5b6de132af49c272c4472ad2703afbda
Diffstat (limited to 'services')
-rw-r--r--services/surfaceflinger/DisplayDevice.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp
index ce98b67..c56645f 100644
--- a/services/surfaceflinger/DisplayDevice.cpp
+++ b/services/surfaceflinger/DisplayDevice.cpp
@@ -343,6 +343,20 @@ status_t DisplayDevice::orientationToTransfrom(
int orientation, int w, int h, Transform* tr)
{
uint32_t flags = 0;
+ char value[PROPERTY_VALUE_MAX];
+ property_get("ro.sf.hwrotation", value, "0");
+ int additionalRot = atoi(value);
+
+ if (additionalRot) {
+ additionalRot /= 90;
+ if (orientation == DisplayState::eOrientationUnchanged) {
+ orientation = additionalRot;
+ } else {
+ orientation += additionalRot;
+ orientation %= 4;
+ }
+ }
+
switch (orientation) {
case DisplayState::eOrientationDefault:
flags = Transform::ROT_0;
@@ -359,6 +373,7 @@ status_t DisplayDevice::orientationToTransfrom(
default:
return BAD_VALUE;
}
+
tr->set(flags, w, h);
return NO_ERROR;
}