summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorChris Tate <ctate@google.com>2010-10-22 19:20:24 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2010-10-22 19:20:24 -0700
commit9d210672319fd04f51bfc6cb3c6cb1a50c1a03c1 (patch)
tree3097dc9664f7a02c061a9d2c4d534cbf23329d74 /services
parent072fabc0e544e85ca0f8e483cc104875ac4b8869 (diff)
parentef70a07753b4ac2bc0e9315cf46452f8df1ced3c (diff)
downloadframeworks_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.java13
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;