diff options
| author | 2014-05-13 01:34:49 +0900 | |
|---|---|---|
| committer | 2014-05-13 02:04:27 +0900 | |
| commit | f982613c81ef89cf33cc99498649e624b2a94a58 (patch) | |
| tree | e44fe8cefc24e412955170b14ffb8bca21cbb983 | |
| parent | 5fca50490746c52c2ec977529af3bbf17ce3b285 (diff) | |
Use copied input events in TvView
InputEvents are recycled in ViewRootImpl. If a event is recycled
between sending the input event to TIS and receiving its results
in TvView, the value of the input event can be changed.
So we use its copied input event in TvView.
Bug: 14792009
Change-Id: I82d4594f28cd72924c56f6e7a0fc12ff7dca1660
| -rw-r--r-- | core/java/android/tv/TvView.java | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/core/java/android/tv/TvView.java b/core/java/android/tv/TvView.java index 289823b4a2cd..e07a3ad814bb 100644 --- a/core/java/android/tv/TvView.java +++ b/core/java/android/tv/TvView.java @@ -196,7 +196,9 @@ public class TvView extends SurfaceView { if (mSession == null) { return false; } - int ret = mSession.dispatchInputEvent(event, event, mFinishedInputEventCallback, mHandler); + InputEvent copiedEvent = event.copy(); + int ret = mSession.dispatchInputEvent(copiedEvent, copiedEvent, mFinishedInputEventCallback, + mHandler); return ret != Session.DISPATCH_NOT_HANDLED; } @@ -209,7 +211,9 @@ public class TvView extends SurfaceView { if (mSession == null) { return false; } - int ret = mSession.dispatchInputEvent(event, event, mFinishedInputEventCallback, mHandler); + InputEvent copiedEvent = event.copy(); + int ret = mSession.dispatchInputEvent(copiedEvent, copiedEvent, mFinishedInputEventCallback, + mHandler); return ret != Session.DISPATCH_NOT_HANDLED; } @@ -222,7 +226,9 @@ public class TvView extends SurfaceView { if (mSession == null) { return false; } - int ret = mSession.dispatchInputEvent(event, event, mFinishedInputEventCallback, mHandler); + InputEvent copiedEvent = event.copy(); + int ret = mSession.dispatchInputEvent(copiedEvent, copiedEvent, mFinishedInputEventCallback, + mHandler); return ret != Session.DISPATCH_NOT_HANDLED; } @@ -235,7 +241,9 @@ public class TvView extends SurfaceView { if (mSession == null) { return false; } - int ret = mSession.dispatchInputEvent(event, event, mFinishedInputEventCallback, mHandler); + InputEvent copiedEvent = event.copy(); + int ret = mSession.dispatchInputEvent(copiedEvent, copiedEvent, mFinishedInputEventCallback, + mHandler); return ret != Session.DISPATCH_NOT_HANDLED; } |