diff options
| author | Sangkyu Lee <sk82.lee@lge.com> | 2013-01-16 14:53:17 +0900 |
|---|---|---|
| committer | Craig Mautner <cmautner@google.com> | 2013-04-02 10:28:13 -0700 |
| commit | 0438bd692b523b2291cd945d1affe99c133743b6 (patch) | |
| tree | 92f879a3aa1d939514d061ccbe73994df80d6323 /docs/html/sdk/api_diff/5/changes.html | |
| parent | 5514aff44d506ce23cd14d73962de335224db707 (diff) | |
Fix potential deadlock between LockScreen and WindowManagerService
If LockScreen is enhanced using SurfaceView/GLSurfaceView,
deadlock problem between LockScreen and WindowManagerService
can occur because of IWindow.resized() callback.
And it must lead to watchdog and reset.
IWindow.resized() callback is one-way function so calling resized()
callback of a remote IWindow object is never blocked.
However, calling resized() callback of a local IWindow object
(LockScreen is running on the same system_server process)
is always blocked until resized() callback returns.
Because resized() callback of SurfaceView/GLSurfaceView can lead to
WindowManagerService.relayoutWindow() call, deadlock can occur
between relayoutWindow() and performLayoutAndPlaceSurfacesLockedInner().
(Both functions need locking mWindowMap)
So this patch simulate one-way call when calling resized() callback
of a local IWindow object.
Change-Id: I2a6a5c74ed22d8e6b7a3bea3424ff2879d227105
Signed-off-by: Sangkyu Lee <sk82.lee@lge.com>
Conflicts:
services/java/com/android/server/wm/WindowManagerService.java
Diffstat (limited to 'docs/html/sdk/api_diff/5/changes.html')
0 files changed, 0 insertions, 0 deletions
