diff options
author | Mathias Agopian <mathias@google.com> | 2012-09-04 19:30:46 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2012-09-04 19:30:46 -0700 |
commit | 00e8c7a88a5b9c4104a71013a713acd3e4d3b77b (patch) | |
tree | 71fd225e0f7f8dd1a909c64c97718989aa8f06c2 /services | |
parent | da8d0a5c0cf9d41915d3b106cad4aaec3e767c11 (diff) | |
download | frameworks_native-00e8c7a88a5b9c4104a71013a713acd3e4d3b77b.zip frameworks_native-00e8c7a88a5b9c4104a71013a713acd3e4d3b77b.tar.gz frameworks_native-00e8c7a88a5b9c4104a71013a713acd3e4d3b77b.tar.bz2 |
display projection API now has a single function instead of 3
Change-Id: I9bf46d372b77d547486d4bbe6f1953ec8c65e98f
Diffstat (limited to 'services')
-rw-r--r-- | services/surfaceflinger/DisplayDevice.cpp | 21 | ||||
-rw-r--r-- | services/surfaceflinger/DisplayDevice.h | 4 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 27 |
3 files changed, 16 insertions, 36 deletions
diff --git a/services/surfaceflinger/DisplayDevice.cpp b/services/surfaceflinger/DisplayDevice.cpp index cf781d3..01ae1c2 100644 --- a/services/surfaceflinger/DisplayDevice.cpp +++ b/services/surfaceflinger/DisplayDevice.cpp @@ -150,7 +150,7 @@ void DisplayDevice::init(EGLConfig config) mHwcDisplayId = mFlinger->allocateHwcDisplayId(mType); // initialize the display orientation transform. - DisplayDevice::setOrientation(DisplayState::eOrientationDefault); + setProjection(DisplayState::eOrientationDefault, mViewport, mFrame); } uint32_t DisplayDevice::getPageFlipCount() const { @@ -298,25 +298,14 @@ status_t DisplayDevice::orientationToTransfrom( return NO_ERROR; } -void DisplayDevice::setOrientation(int orientation) { +void DisplayDevice::setProjection(int orientation, + const Rect& viewport, const Rect& frame) { mOrientation = orientation; + mViewport = viewport; + mFrame = frame; updateGeometryTransform(); } -void DisplayDevice::setViewport(const Rect& viewport) { - if (viewport.isValid()) { - mViewport = viewport; - updateGeometryTransform(); - } -} - -void DisplayDevice::setFrame(const Rect& frame) { - if (frame.isValid()) { - mFrame = frame; - updateGeometryTransform(); - } -} - void DisplayDevice::updateGeometryTransform() { int w = mDisplayWidth; int h = mDisplayHeight; diff --git a/services/surfaceflinger/DisplayDevice.h b/services/surfaceflinger/DisplayDevice.h index 12a0152..8122b9d 100644 --- a/services/surfaceflinger/DisplayDevice.h +++ b/services/surfaceflinger/DisplayDevice.h @@ -94,9 +94,7 @@ public: Region getDirtyRegion(bool repaintEverything) const; void setLayerStack(uint32_t stack); - void setOrientation(int orientation); - void setViewport(const Rect& viewport); - void setFrame(const Rect& frame); + void setProjection(int orientation, const Rect& viewport, const Rect& frame); int getOrientation() const { return mOrientation; } const Transform& getTransform() const { return mGlobalTransform; } diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index ed91d44..f6dd62a 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -972,14 +972,12 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) if (state.layerStack != draw[i].layerStack) { disp->setLayerStack(state.layerStack); } - if (state.orientation != draw[i].orientation) { - disp->setOrientation(state.orientation); - } - if (state.viewport != draw[i].viewport) { - disp->setViewport(state.viewport); - } - if (state.frame != draw[i].frame) { - disp->setFrame(state.frame); + if ((state.orientation != draw[i].orientation) + || (state.viewport != draw[i].viewport) + || (state.frame != draw[i].frame)) + { + disp->setProjection(state.orientation, + state.viewport, state.viewport); } } } @@ -997,9 +995,8 @@ void SurfaceFlinger::handleTransactionLocked(uint32_t transactionFlags) sp<DisplayDevice> disp = new DisplayDevice(this, state.type, display, stc, 0, mEGLConfig); disp->setLayerStack(state.layerStack); - disp->setOrientation(state.orientation); - disp->setViewport(state.viewport); - disp->setFrame(state.frame); + disp->setProjection(state.orientation, + state.viewport, state.viewport); mDisplays.add(display, disp); } } @@ -1499,19 +1496,15 @@ uint32_t SurfaceFlinger::setDisplayStateLocked(const DisplayState& s) flags |= eDisplayTransactionNeeded; } } - if (what & DisplayState::eOrientationChanged) { + if (what & DisplayState::eDisplayProjectionChanged) { if (disp.orientation != s.orientation) { disp.orientation = s.orientation; flags |= eDisplayTransactionNeeded; } - } - if (what & DisplayState::eFrameChanged) { if (disp.frame != s.frame) { disp.frame = s.frame; flags |= eDisplayTransactionNeeded; } - } - if (what & DisplayState::eViewportChanged) { if (disp.viewport != s.viewport) { disp.viewport = s.viewport; flags |= eDisplayTransactionNeeded; @@ -1732,7 +1725,7 @@ void SurfaceFlinger::onInitializeDisplays() { Vector<ComposerState> state; Vector<DisplayState> displays; DisplayState d; - d.what = DisplayState::eOrientationChanged; + d.what = DisplayState::eDisplayProjectionChanged; d.token = mDefaultDisplays[DisplayDevice::DISPLAY_PRIMARY]; d.orientation = DisplayState::eOrientationDefault; displays.add(d); |