diff options
author | Mathias Agopian <mathias@google.com> | 2011-10-18 20:19:59 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2011-10-18 20:21:47 -0700 |
commit | 526f0a0e158cf46c244edc57624c15ebce26c71f (patch) | |
tree | 019fdf3dfe9b50c00093442c7cbdbdce30994f3e | |
parent | 0d0fba4587df36846baa80463490befdcef38e98 (diff) | |
download | frameworks_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.java | 6 |
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(); } |