diff options
author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-11-24 23:11:49 +0000 |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2012-11-26 17:46:32 +0000 |
commit | 7d283431efffc4402cb1a6cacf5da64729c883bb (patch) | |
tree | 40cd1ff7532ee39647d0ff34c7e7194739f9e911 /services | |
parent | e657227f88844f31da7f9a11c783c84bdbbc80bd (diff) | |
download | frameworks_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.cpp | 15 |
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; } |