Transaction::setGeometry: Handle invalid src rect correctly
If no source rect (INVALID_RECT) is passed in we use no crop
and a scaling factor of 1.
Bug: 123720507
Test: android.wm.cts.SurfaceControlTest
Change-Id: I92a7f951c32fb10071a7fac17bc338b433d521fd
diff --git a/libs/gui/SurfaceComposerClient.cpp b/libs/gui/SurfaceComposerClient.cpp
index 0e61702..e9bcf26 100644
--- a/libs/gui/SurfaceComposerClient.cpp
+++ b/libs/gui/SurfaceComposerClient.cpp
@@ -1147,8 +1147,12 @@
int x = dst.left;
int y = dst.top;
- float xScale = dst.getWidth() / static_cast<float>(source.getWidth());
- float yScale = dst.getHeight() / static_cast<float>(source.getHeight());
+
+ float sourceWidth = source.getWidth();
+ float sourceHeight = source.getHeight();
+
+ float xScale = sourceWidth < 0 ? 1.0f : dst.getWidth() / sourceWidth;
+ float yScale = sourceHeight < 0 ? 1.0f : dst.getHeight() / sourceHeight;
float matrix[4] = {1, 0, 0, 1};
switch (transform) {