summaryrefslogtreecommitdiffstats
path: root/services/java/com/android/server
diff options
context:
space:
mode:
authorJeff Brown <jeffbrown@google.com>2012-06-18 14:14:55 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-06-18 14:14:55 -0700
commitc4b0d098d60ad532cebb3c043f3a1cdb39033f1f (patch)
tree09342d0ceb2859ae9b07434aec720cbc10e4bb21 /services/java/com/android/server
parent12da2c5eeeadd6c23da5d3003d0da3b6b73d5052 (diff)
parentee172414877d64ebfbcdbadf10691d04a5eee684 (diff)
downloadframeworks_base-c4b0d098d60ad532cebb3c043f3a1cdb39033f1f.zip
frameworks_base-c4b0d098d60ad532cebb3c043f3a1cdb39033f1f.tar.gz
frameworks_base-c4b0d098d60ad532cebb3c043f3a1cdb39033f1f.tar.bz2
Merge "Fix an NPE and possible unsynchronized call of Locked method." into jb-dev
Diffstat (limited to 'services/java/com/android/server')
-rw-r--r--services/java/com/android/server/wm/InputMonitor.java33
-rwxr-xr-xservices/java/com/android/server/wm/WindowManagerService.java6
2 files changed, 22 insertions, 17 deletions
diff --git a/services/java/com/android/server/wm/InputMonitor.java b/services/java/com/android/server/wm/InputMonitor.java
index 47cd34a..285d230 100644
--- a/services/java/com/android/server/wm/InputMonitor.java
+++ b/services/java/com/android/server/wm/InputMonitor.java
@@ -87,26 +87,29 @@ final class InputMonitor implements InputManagerService.Callbacks {
public long notifyANR(InputApplicationHandle inputApplicationHandle,
InputWindowHandle inputWindowHandle) {
AppWindowToken appWindowToken = null;
- if (inputWindowHandle != null) {
- synchronized (mService.mWindowMap) {
- WindowState windowState = (WindowState) inputWindowHandle.windowState;
+ synchronized (mService.mWindowMap) {
+ WindowState windowState = null;
+ if (inputWindowHandle != null) {
+ windowState = (WindowState) inputWindowHandle.windowState;
if (windowState != null) {
- Slog.i(WindowManagerService.TAG, "Input event dispatching timed out sending to "
- + windowState.mAttrs.getTitle());
appWindowToken = windowState.mAppToken;
- mService.saveANRStateLocked(appWindowToken, windowState);
}
}
- }
-
- if (appWindowToken == null && inputApplicationHandle != null) {
- appWindowToken = (AppWindowToken)inputApplicationHandle.appWindowToken;
- if (appWindowToken != null) {
- Slog.i(WindowManagerService.TAG,
- "Input event dispatching timed out sending to application "
- + appWindowToken.stringName);
- mService.saveANRStateLocked(appWindowToken, null);
+ if (appWindowToken == null && inputApplicationHandle != null) {
+ appWindowToken = (AppWindowToken)inputApplicationHandle.appWindowToken;
}
+
+ if (windowState != null) {
+ Slog.i(WindowManagerService.TAG, "Input event dispatching timed out "
+ + "sending to " + windowState.mAttrs.getTitle());
+ } else if (appWindowToken != null) {
+ Slog.i(WindowManagerService.TAG, "Input event dispatching timed out "
+ + "sending to application " + appWindowToken.stringName);
+ } else {
+ Slog.i(WindowManagerService.TAG, "Input event dispatching timed out.");
+ }
+
+ mService.saveANRStateLocked(appWindowToken, windowState);
}
if (appWindowToken != null && appWindowToken.appToken != null) {
diff --git a/services/java/com/android/server/wm/WindowManagerService.java b/services/java/com/android/server/wm/WindowManagerService.java
index 0d7b06c..5efbe2c 100755
--- a/services/java/com/android/server/wm/WindowManagerService.java
+++ b/services/java/com/android/server/wm/WindowManagerService.java
@@ -9860,14 +9860,16 @@ public class WindowManagerService extends IWindowManager.Stub
* the time an ANR occurred before anything else in the system changes
* in response.
*
- * @param appWindowToken The application that ANR'd, never null.
+ * @param appWindowToken The application that ANR'd, may be null.
* @param windowState The window that ANR'd, may be null.
*/
public void saveANRStateLocked(AppWindowToken appWindowToken, WindowState windowState) {
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
pw.println(" ANR time: " + DateFormat.getInstance().format(new Date()));
- pw.println(" Application at fault: " + appWindowToken.stringName);
+ if (appWindowToken != null) {
+ pw.println(" Application at fault: " + appWindowToken.stringName);
+ }
if (windowState != null) {
pw.println(" Window at fault: " + windowState.mAttrs.getTitle());
}