diff --git a/core/java/android/view/DragEvent.java b/core/java/android/view/DragEvent.java index 25b680e65b940..4d838914c178a 100644 --- a/core/java/android/view/DragEvent.java +++ b/core/java/android/view/DragEvent.java @@ -130,12 +130,13 @@ public static final int ACTION_DRAG_EXITED = 6; } private void init(int action, float x, float y, ClipDescription description, ClipData data, - boolean result) { + Object localState, boolean result) { mAction = action; mX = x; mY = y; mClipDescription = description; mClipData = data; + mLocalState = localState; mDragResult = result; } @@ -150,7 +151,7 @@ public static final int ACTION_DRAG_EXITED = 6; synchronized (gRecyclerLock) { if (gRecyclerTop == null) { ev = new DragEvent(); - ev.init(action, x, y, description, data, result); + ev.init(action, x, y, description, data, localState, result); return ev; } ev = gRecyclerTop; @@ -161,7 +162,7 @@ public static final int ACTION_DRAG_EXITED = 6; ev.mRecycled = false; ev.mNext = null; - ev.init(action, x, y, description, data, result); + ev.init(action, x, y, description, data, localState, result); return ev; } diff --git a/core/java/android/view/ViewRoot.java b/core/java/android/view/ViewRoot.java index 14737568cd78a..49d28d8c06c1d 100644 --- a/core/java/android/view/ViewRoot.java +++ b/core/java/android/view/ViewRoot.java @@ -233,7 +233,7 @@ public final class ViewRoot extends Handler implements ViewParent, /* Drag/drop */ ClipDescription mDragDescription; View mCurrentDragView; - Object mLocalDragState; + volatile Object mLocalDragState; final PointF mDragPoint = new PointF(); final PointF mLastTouchPoint = new PointF(); @@ -2060,7 +2060,9 @@ public final class ViewRoot extends Handler implements ViewParent, } break; case DISPATCH_DRAG_EVENT: case DISPATCH_DRAG_LOCATION_EVENT: { - handleDragEvent((DragEvent)msg.obj); + DragEvent event = (DragEvent)msg.obj; + event.mLocalState = mLocalDragState; // only present when this app called startDrag() + handleDragEvent(event); } break; } } @@ -3241,7 +3243,6 @@ public final class ViewRoot extends Handler implements ViewParent, } else { what = DISPATCH_DRAG_EVENT; } - event.mLocalState = mLocalDragState; // only present when this app called startDrag() Message msg = obtainMessage(what, event); sendMessage(msg); }