summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMathias Agopian <mathias@google.com>2011-10-18 20:19:59 -0700
committerMathias Agopian <mathias@google.com>2011-10-18 20:21:47 -0700
commit526f0a0e158cf46c244edc57624c15ebce26c71f (patch)
tree019fdf3dfe9b50c00093442c7cbdbdce30994f3e
parent0d0fba4587df36846baa80463490befdcef38e98 (diff)
downloadframeworks_base-526f0a0e158cf46c244edc57624c15ebce26c71f.zip
frameworks_base-526f0a0e158cf46c244edc57624c15ebce26c71f.tar.gz
frameworks_base-526f0a0e158cf46c244edc57624c15ebce26c71f.tar.bz2
Fix a hang in SF caused by invalid transform matrix from the WM
WindowManager could create by transforms because of divide by zero. Bug: 5422468 Change-Id: I782f87ebb78b5ff23750e22837f36ca6cfed1f2f
-rw-r--r--services/java/com/android/server/wm/WindowState.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/services/java/com/android/server/wm/WindowState.java b/services/java/com/android/server/wm/WindowState.java
index e921818..eeffb02 100644
--- a/services/java/com/android/server/wm/WindowState.java
+++ b/services/java/com/android/server/wm/WindowState.java
@@ -1120,7 +1120,11 @@ final class WindowState implements WindowManagerPolicy.WindowState {
// window's center).
final float w = frame.width();
final float h = frame.height();
- tmpMatrix.setScale(1 + 2/w, 1 + 2/h, w/2, h/2);
+ if (w>=1 && h>=1) {
+ tmpMatrix.setScale(1 + 2/w, 1 + 2/h, w/2, h/2);
+ } else {
+ tmpMatrix.reset();
+ }
} else {
tmpMatrix.reset();
}