Fix #2320798: Device hang then runtime restart
The system_server process is deadlocking between event dispatch and window manager code. This change fixes the lock scoping to eliminate the deadlock. Change-Id: I00f029e4d51d7432119ad3aeec260df215b52546
This commit is contained in:
@ -6011,18 +6011,18 @@ public class WindowManagerService extends IWindowManager.Stub
|
|||||||
res.offsetLocation(-win.mFrame.left, -win.mFrame.top);
|
res.offsetLocation(-win.mFrame.left, -win.mFrame.top);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
if (res != null && returnWhat == RETURN_PENDING_POINTER) {
|
|
||||||
synchronized (mWindowMap) {
|
if (res != null && returnWhat == RETURN_PENDING_POINTER) {
|
||||||
if ((mWallpaperTarget == win &&
|
synchronized (mWindowMap) {
|
||||||
win.mAttrs.type != WindowManager.LayoutParams.TYPE_KEYGUARD)
|
if ((mWallpaperTarget == win &&
|
||||||
|| mSendingPointersToWallpaper) {
|
win.mAttrs.type != WindowManager.LayoutParams.TYPE_KEYGUARD)
|
||||||
sendPointerToWallpaperLocked(win, res, res.getEventTime());
|
|| mSendingPointersToWallpaper) {
|
||||||
}
|
sendPointerToWallpaperLocked(win, res, res.getEventTime());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user