diff options
| author | Chris Tate <ctate@google.com> | 2010-10-22 19:20:24 -0700 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2010-10-22 19:20:24 -0700 |
| commit | 9d210672319fd04f51bfc6cb3c6cb1a50c1a03c1 (patch) | |
| tree | 3097dc9664f7a02c061a9d2c4d534cbf23329d74 /services | |
| parent | 072fabc0e544e85ca0f8e483cc104875ac4b8869 (diff) | |
| parent | ef70a07753b4ac2bc0e9315cf46452f8df1ced3c (diff) | |
| download | frameworks_base-9d210672319fd04f51bfc6cb3c6cb1a50c1a03c1.zip frameworks_base-9d210672319fd04f51bfc6cb3c6cb1a50c1a03c1.tar.gz frameworks_base-9d210672319fd04f51bfc6cb3c6cb1a50c1a03c1.tar.bz2 | |
Merge "Fix error recovery when a drag can't be started"
Diffstat (limited to 'services')
| -rw-r--r-- | services/java/com/android/server/WindowManagerService.java | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/services/java/com/android/server/WindowManagerService.java b/services/java/com/android/server/WindowManagerService.java index 7258729..9bc24d2 100644 --- a/services/java/com/android/server/WindowManagerService.java +++ b/services/java/com/android/server/WindowManagerService.java @@ -552,6 +552,7 @@ public class WindowManagerService extends IWindowManager.Stub mInputManager.unregisterInputChannel(mServerChannel); InputQueue.unregisterInputChannel(mClientChannel); mClientChannel.dispose(); + mServerChannel.dispose(); mClientChannel = null; mServerChannel = null; } @@ -624,7 +625,7 @@ public class WindowManagerService extends IWindowManager.Stub } } if (DEBUG_DRAG) { - Slog.d(TAG, "sending DRAG_STARTED to new window " + newWin); + Slog.d(TAG, "need to send DRAG_STARTED to new window " + newWin); } sendDragStartedLw(newWin, mCurrentX, mCurrentY, mDataDescription); } @@ -6242,8 +6243,14 @@ public class WindowManagerService extends IWindowManager.Stub mDragState.register(); mInputMonitor.updateInputWindowsLw(); - mInputManager.transferTouchFocus(callingWin.mInputChannel, - mDragState.mServerChannel); + if (!mInputManager.transferTouchFocus(callingWin.mInputChannel, + mDragState.mServerChannel)) { + Slog.e(TAG, "Unable to transfer touch focus"); + mDragState.unregister(); + mDragState = null; + mInputMonitor.updateInputWindowsLw(); + return false; + } mDragState.mData = data; mDragState.mCurrentX = touchX; |
