Fix the position set for setGeometry calculation.

The current implementation of setGeometry will set the position as the x
and y value of destination. However, this value will not work if the
source is not at 0, 0 since it will start crop at a non zero position.
The position will be set based on the non cropped area so the final
content frame will not be positioned at the specified position.

This change calculates the offset for x and y based on the source's
crop's position and scale since it will need to create a negative offset
to compensate for the crop

Test: SetGeometryTest
Fixes: 141495784
Change-Id: I7dc0e5f9e65f9838ebd86f304bc1ca0beffc4393
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index 6b5021d..547e5f1 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -1327,7 +1327,9 @@
             break;
     }
     setMatrix(sc, matrix[0], matrix[1], matrix[2], matrix[3]);
-    setPosition(sc, x, y);
+    float offsetX = xScale * source.left;
+    float offsetY = yScale * source.top;
+    setPosition(sc, x - offsetX, y - offsetY);
 
     return *this;
 }