summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2012-09-04 19:30:46 -0700
committerMathias Agopian <mathias@google.com>2012-09-04 19:30:46 -0700
commit00e8c7a88a5b9c4104a71013a713acd3e4d3b77b (patch)
tree71fd225e0f7f8dd1a909c64c97718989aa8f06c2 /services
parentda8d0a5c0cf9d41915d3b106cad4aaec3e767c11 (diff)
downloadframeworks_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.cpp21
-rw-r--r--services/surfaceflinger/DisplayDevice.h4
-rw-r--r--services/surfaceflinger/SurfaceFlinger.cpp27
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);