Fix drag bug.
Previous assumption -- that the drag window was defined at time of
DragState construction -- was false. The window, and hence the
Display, is not known until performDrag. This change delays assigning
DragState.mDisplayContent until the window/Display is known.
Fixes bug 7028203.
Change-Id: I5799005652c484ff0c45ab340ce3b9e4b784883e
diff --git a/services/java/com/android/server/wm/DragState.java b/services/java/com/android/server/wm/DragState.java
index 26ea7c1..3fcf680 100644
--- a/services/java/com/android/server/wm/DragState.java
+++ b/services/java/com/android/server/wm/DragState.java
@@ -71,12 +71,6 @@
mFlags = flags;
mLocalWin = localWin;
mNotifiedWindows = new ArrayList<WindowState>();
- WindowState win = service.mWindowMap.get(token);
- if (win != null) {
- mDisplayContent = win.mDisplayContent;
- } else {
- Slog.e(WindowManagerService.TAG, "No window associated with token");
- }
}
void reset() {
@@ -92,7 +86,11 @@
mNotifiedWindows = null;
}
- void register() {
+ /**
+ * @param displayContent The display parameters associated with the window being dragged.
+ */
+ void register(DisplayContent displayContent) {
+ mDisplayContent = displayContent;
if (WindowManagerService.DEBUG_DRAG) Slog.d(WindowManagerService.TAG, "registering drag input channel");
if (mClientChannel != null) {
Slog.e(WindowManagerService.TAG, "Duplicate register of drag input channel");