Please sign in to comment.
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 <firstname.lastname@example.org>
- Loading branch information...
Showing with 25 additions and 3 deletions.