minor refactoring in praparation of crop fix
Bug: 6498869
Change-Id: I12a6f9a9fdfd2ea1db3fbe5fc8cb443aeaedb328
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index 7eba89b..5988ed2 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -232,27 +232,28 @@
// ... then reduce that in the same proportions as the window crop reduces
// the window size.
const State& s(drawingState());
- if (!s.crop.isEmpty()) {
+ if (!s.active.crop.isEmpty()) {
// Transform the window crop to match the buffer coordinate system,
// which means using the inverse of the current transform set on the
// SurfaceTexture.
uint32_t invTransform = mCurrentTransform;
- int winWidth = s.w;
- int winHeight = s.h;
+ int winWidth = s.active.w;
+ int winHeight = s.active.h;
if (invTransform & NATIVE_WINDOW_TRANSFORM_ROT_90) {
invTransform ^= NATIVE_WINDOW_TRANSFORM_FLIP_V |
NATIVE_WINDOW_TRANSFORM_FLIP_H;
- winWidth = s.h;
- winHeight = s.w;
+ winWidth = s.active.h;
+ winHeight = s.active.w;
}
- Rect winCrop = s.crop.transform(invTransform, s.w, s.h);
+ Rect winCrop = s.active.crop.transform(invTransform,
+ s.active.w, s.active.h);
float xScale = float(crop.width()) / float(winWidth);
float yScale = float(crop.height()) / float(winHeight);
- crop.left += int(ceil(float(winCrop.left) * xScale));
- crop.top += int(ceil(float(winCrop.top) * yScale));
- crop.right -= int(ceil(float(winWidth - winCrop.right) * xScale));
- crop.bottom -= int(ceil(float(winHeight - winCrop.bottom) * yScale));
+ crop.left += int(ceilf(float(winCrop.left) * xScale));
+ crop.top += int(ceilf(float(winCrop.top) * yScale));
+ crop.right -= int(ceilf(float(winWidth - winCrop.right) * xScale));
+ crop.bottom -= int(ceilf(float(winHeight - winCrop.bottom) * yScale));
}
return crop;
@@ -427,8 +428,8 @@
const Layer::State& front(drawingState());
const Layer::State& temp(currentState());
- const bool sizeChanged = (front.requested_w != temp.requested_w) ||
- (front.requested_h != temp.requested_h);
+ const bool sizeChanged = (front.requested.w != temp.requested.w) ||
+ (front.requested.h != temp.requested.h);
if (sizeChanged) {
// the size changed, we need to ask our client to request a new buffer
@@ -437,22 +438,22 @@
"resize (layer=%p), requested (%dx%d), drawing (%d,%d), "
"scalingMode=%d",
this,
- int(temp.requested_w), int(temp.requested_h),
- int(front.requested_w), int(front.requested_h),
+ int(temp.requested.w), int(temp.requested.h),
+ int(front.requested.w), int(front.requested.h),
mCurrentScalingMode);
if (!isFixedSize()) {
// this will make sure LayerBase::doTransaction doesn't update
// the drawing state's size
Layer::State& editDraw(mDrawingState);
- editDraw.requested_w = temp.requested_w;
- editDraw.requested_h = temp.requested_h;
+ editDraw.requested.w = temp.requested.w;
+ editDraw.requested.h = temp.requested.h;
}
// record the new size, form this point on, when the client request
// a buffer, it'll get the new size.
- mSurfaceTexture->setDefaultBufferSize(temp.requested_w,
- temp.requested_h);
+ mSurfaceTexture->setDefaultBufferSize(temp.requested.w,
+ temp.requested.h);
}
return LayerBase::doTransaction(flags);
@@ -551,10 +552,10 @@
const Layer::State& front(drawingState());
// FIXME: mPostedDirtyRegion = dirty & bounds
- mPostedDirtyRegion.set(front.w, front.h);
+ mPostedDirtyRegion.set(front.active.w, front.active.h);
- if ((front.w != front.requested_w) ||
- (front.h != front.requested_h))
+ if ((front.active.w != front.requested.w) ||
+ (front.active.h != front.requested.h))
{
// check that we received a buffer of the right size
// (Take the buffer's orientation into account)
@@ -563,15 +564,15 @@
}
if (isFixedSize() ||
- (bufWidth == front.requested_w &&
- bufHeight == front.requested_h))
+ (bufWidth == front.requested.w &&
+ bufHeight == front.requested.h))
{
// Here we pretend the transaction happened by updating the
// current and drawing states. Drawing state is only accessed
// in this thread, no need to have it locked
Layer::State& editDraw(mDrawingState);
- editDraw.w = editDraw.requested_w;
- editDraw.h = editDraw.requested_h;
+ editDraw.active.w = editDraw.requested.w;
+ editDraw.active.h = editDraw.requested.h;
// We also need to update the current state so that we don't
// end-up doing too much work during the next transaction.
@@ -579,8 +580,8 @@
// because State::w and State::h are only accessed from
// this thread
Layer::State& editTemp(currentState());
- editTemp.w = editDraw.w;
- editTemp.h = editDraw.h;
+ editTemp.active.w = editDraw.active.w;
+ editTemp.active.h = editDraw.active.h;
// recompute visible region
recomputeVisibleRegions = true;
@@ -592,7 +593,7 @@
"requested (%dx%d)",
this,
bufWidth, bufHeight, mCurrentTransform,
- front.requested_w, front.requested_h);
+ front.requested.w, front.requested.h);
}
}
}