SF: Remove setFinalCrop impl 2/2
setFinalCrop functionality is reimplemented by creating a new bounds layer
and applying a crop on this layer. see ag/4625718
Test: mmma frameworks/native/services/surfaceflinger/tests/ && \
mmma frameworks/native/libs/gui/tests/ && adb sync data && \
adb shell /data/nativetest64/libgui_test/libgui_test && \
adb shell /data/nativetest64/libsurfaceflinger_unittest/libsurfaceflinger_unittest && \
adb shell /data/nativetest64/SurfaceFlinger_test/SurfaceFlinger_test && \
adb shell /data/nativetest64/SurfaceParcelable_test/SurfaceParcelable_test && \
adb shell /data/nativetest64/sffakehwc_test/sffakehwc_test && \
echo "ALL TESTS PASSED"
Change-Id: I9be511c07a3351a2947afb2beed10ce2a462b635
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp
index d2ab1b3..edd5cd1 100644
--- a/services/surfaceflinger/Layer.cpp
+++ b/services/surfaceflinger/Layer.cpp
@@ -103,8 +103,6 @@
mCurrentState.flags = layerFlags;
mCurrentState.active_legacy.transform.set(0, 0);
mCurrentState.crop_legacy.makeInvalid();
- mCurrentState.finalCrop_legacy.makeInvalid();
- mCurrentState.requestedFinalCrop_legacy = mCurrentState.finalCrop_legacy;
mCurrentState.requestedCrop_legacy = mCurrentState.crop_legacy;
mCurrentState.z = 0;
mCurrentState.color.a = 1.0f;
@@ -298,11 +296,6 @@
ui::Transform t = getTransform();
win = t.transform(win);
- Rect finalCrop = getFinalCrop(s);
- if (!finalCrop.isEmpty()) {
- win.intersect(finalCrop, &win);
- }
-
const sp<Layer>& p = mDrawingParent.promote();
// Now we need to calculate the parent bounds, so we can clip ourselves to those.
// When calculating the parent bounds for purposes of clipping,
@@ -351,13 +344,9 @@
ui::Transform t = s.active_legacy.transform;
- if (p != nullptr || !s.finalCrop_legacy.isEmpty()) {
+ if (p != nullptr) {
floatWin = t.transform(floatWin);
floatWin = floatWin.intersect(parentBounds);
-
- if (!s.finalCrop_legacy.isEmpty()) {
- floatWin = floatWin.intersect(s.finalCrop_legacy.toFloatRect());
- }
floatWin = t.inverse().transform(floatWin);
}
@@ -388,12 +377,6 @@
if (!activeCrop.intersect(display->getViewport(), &activeCrop)) {
activeCrop.clear();
}
- Rect finalCrop = getFinalCrop(s);
- if (!finalCrop.isEmpty()) {
- if (!activeCrop.intersect(finalCrop, &activeCrop)) {
- activeCrop.clear();
- }
- }
const auto& p = mDrawingParent.promote();
if (p != nullptr) {
@@ -554,12 +537,6 @@
// computeBounds returns a FloatRect to provide more accuracy during the
// transformation. We then round upon constructing 'frame'.
Rect frame{t.transform(computeBounds(activeTransparentRegion))};
- Rect finalCrop = getFinalCrop(s);
- if (!finalCrop.isEmpty()) {
- if (!frame.intersect(finalCrop, &frame)) {
- frame.clear();
- }
- }
if (!frame.intersect(display->getViewport(), &frame)) {
frame.clear();
}
@@ -671,10 +648,6 @@
Rect bounds = reduce(win, getActiveTransparentRegion(s));
Rect frame(getTransform().transform(bounds));
frame.intersect(display->getViewport(), &frame);
- Rect finalCrop = getFinalCrop(s);
- if (!finalCrop.isEmpty()) {
- frame.intersect(finalCrop, &frame);
- }
auto& displayTransform = display->getTransform();
auto position = displayTransform.transform(frame);
@@ -780,25 +753,9 @@
// local state
// ----------------------------------------------------------------------------
-static void boundPoint(vec2* point, const Rect& crop) {
- if (point->x < crop.left) {
- point->x = crop.left;
- }
- if (point->x > crop.right) {
- point->x = crop.right;
- }
- if (point->y < crop.top) {
- point->y = crop.top;
- }
- if (point->y > crop.bottom) {
- point->y = crop.bottom;
- }
-}
-
void Layer::computeGeometry(const RenderArea& renderArea,
renderengine::Mesh& mesh,
bool useIdentityTransform) const {
- const Layer::State& s(getDrawingState());
const ui::Transform renderAreaTransform(renderArea.getTransform());
const uint32_t height = renderArea.getHeight();
FloatRect win = computeBounds();
@@ -816,14 +773,6 @@
rt = layerTransform.transform(rt);
}
- Rect finalCrop = getFinalCrop(s);
- if (!finalCrop.isEmpty()) {
- boundPoint(<, finalCrop);
- boundPoint(&lb, finalCrop);
- boundPoint(&rb, finalCrop);
- boundPoint(&rt, finalCrop);
- }
-
renderengine::Mesh::VertexArray<vec2> position(mesh.getPositionArray<vec2>());
position[0] = renderAreaTransform.transform(lt);
position[1] = renderAreaTransform.transform(lb);
@@ -1292,20 +1241,6 @@
return true;
}
-bool Layer::setFinalCrop_legacy(const Rect& crop, bool immediate) {
- if (mCurrentState.requestedFinalCrop_legacy == crop) return false;
- mCurrentState.sequence++;
- mCurrentState.requestedFinalCrop_legacy = crop;
- if (immediate && !mFreezeGeometryUpdates) {
- mCurrentState.finalCrop_legacy = crop;
- }
- mFreezeGeometryUpdates = mFreezeGeometryUpdates || !immediate;
-
- mCurrentState.modified = true;
- setTransactionFlags(eTransactionNeeded);
- return true;
-}
-
bool Layer::setOverrideScalingMode(int32_t scalingMode) {
if (scalingMode == mOverrideScalingMode) return false;
mOverrideScalingMode = scalingMode;
@@ -1417,7 +1352,6 @@
info.mWidth = ds.active_legacy.w;
info.mHeight = ds.active_legacy.h;
info.mCrop = ds.crop_legacy;
- info.mFinalCrop = ds.finalCrop_legacy;
info.mColor = ds.color;
info.mFlags = ds.flags;
info.mPixelFormat = getPixelFormat();
@@ -1955,7 +1889,6 @@
size->set_h(state.active_legacy.h);
LayerProtoHelper::writeToProto(state.crop_legacy, layerInfo->mutable_crop());
- LayerProtoHelper::writeToProto(state.finalCrop_legacy, layerInfo->mutable_final_crop());
layerInfo->set_is_opaque(isOpaque(state));
layerInfo->set_invalidate(contentDirty);