input.cpp revision 4fe6c3e51be77e35f40872cdbca6c80f8f8b7ecb
1a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn/*
2a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn * Copyright (C) 2009 The Android Open Source Project
3a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn *
4a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn * Licensed under the Apache License, Version 2.0 (the "License");
5a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn * you may not use this file except in compliance with the License.
6a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn * You may obtain a copy of the License at
7a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn *
8a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn *      http://www.apache.org/licenses/LICENSE-2.0
9a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn *
10a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn * Unless required by applicable law or agreed to in writing, software
11a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn * distributed under the License is distributed on an "AS IS" BASIS,
12a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn * See the License for the specific language governing permissions and
14a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn * limitations under the License.
15a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn */
16a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
17a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn#define LOG_TAG "input"
18a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn#include <utils/Log.h>
19a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
20a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn#include <android/input.h>
21a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn#include <ui/Input.h>
22a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn#include <ui/InputTransport.h>
234fe6c3e51be77e35f40872cdbca6c80f8f8b7ecbJeff Brown#include <utils/Looper.h>
246d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown#include <utils/RefBase.h>
256d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown#include <utils/Vector.h>
26a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
27d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn#include <android_runtime/android_app_NativeActivity.h>
28d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
29a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn#include <poll.h>
306d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown#include <errno.h>
31a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
32a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornusing android::InputEvent;
33a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornusing android::KeyEvent;
34a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornusing android::MotionEvent;
356d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brownusing android::InputDeviceInfo;
366d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brownusing android::sp;
376d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brownusing android::Vector;
38a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
392e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AInputEvent_getType(const AInputEvent* event) {
40a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const InputEvent*>(event)->getType();
41a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
42a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
432e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AInputEvent_getDeviceId(const AInputEvent* event) {
44a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const InputEvent*>(event)->getDeviceId();
45a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
46a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
47c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownint32_t AInputEvent_getSource(const AInputEvent* event) {
48c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const InputEvent*>(event)->getSource();
49a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
50a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
512e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getAction(const AInputEvent* key_event) {
52a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getAction();
53a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
54a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
552e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getFlags(const AInputEvent* key_event) {
56a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getFlags();
57a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
58a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
592e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getKeyCode(const AInputEvent* key_event) {
60a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getKeyCode();
61a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
62a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
632e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getScanCode(const AInputEvent* key_event) {
64a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getScanCode();
65a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
66a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
672e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getMetaState(const AInputEvent* key_event) {
68a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getMetaState();
69a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
702e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getRepeatCount(const AInputEvent* key_event) {
71a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getRepeatCount();
72a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
73a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
742e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AKeyEvent_getDownTime(const AInputEvent* key_event) {
75a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getDownTime();
76a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
77a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
78c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
792e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AKeyEvent_getEventTime(const AInputEvent* key_event) {
80a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getEventTime();
81a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
82a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
832e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getAction(const AInputEvent* motion_event) {
84a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getAction();
85a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
86a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
8785a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brownint32_t AMotionEvent_getFlags(const AInputEvent* motion_event) {
8885a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getFlags();
8985a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown}
9085a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown
912e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getMetaState(const AInputEvent* motion_event) {
92a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getMetaState();
93a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
94a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
952e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getEdgeFlags(const AInputEvent* motion_event) {
96a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return reinterpret_cast<const MotionEvent*>(motion_event)->getEdgeFlags();
97a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
98a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
992e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AMotionEvent_getDownTime(const AInputEvent* motion_event) {
100a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getDownTime();
101a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
102a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1032e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AMotionEvent_getEventTime(const AInputEvent* motion_event) {
104a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getEventTime();
105a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
106a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1072e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getXOffset(const AInputEvent* motion_event) {
108a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getXOffset();
109a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
110a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1112e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getYOffset(const AInputEvent* motion_event) {
112a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getYOffset();
113a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
114a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1152e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getXPrecision(const AInputEvent* motion_event) {
116a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getXPrecision();
117a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
118a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1192e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getYPrecision(const AInputEvent* motion_event) {
120a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getYPrecision();
121a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
122a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1232e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornsize_t AMotionEvent_getPointerCount(const AInputEvent* motion_event) {
124a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getPointerCount();
125a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
126a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1272e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getPointerId(const AInputEvent* motion_event, size_t pointer_index) {
128a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getPointerId(pointer_index);
129a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
130a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1312e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getRawX(const AInputEvent* motion_event, size_t pointer_index) {
132a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getRawX(pointer_index);
133a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
134a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1352e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getRawY(const AInputEvent* motion_event, size_t pointer_index) {
136a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getRawY(pointer_index);
137a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
138a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1392e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getX(const AInputEvent* motion_event, size_t pointer_index) {
140a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getX(pointer_index);
141a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
142a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1432e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getY(const AInputEvent* motion_event, size_t pointer_index) {
144a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getY(pointer_index);
145a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
146a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1472e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getPressure(const AInputEvent* motion_event, size_t pointer_index) {
148a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getPressure(pointer_index);
149a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
150a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1512e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getSize(const AInputEvent* motion_event, size_t pointer_index) {
152a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getSize(pointer_index);
153a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
154a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
155c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getTouchMajor(const AInputEvent* motion_event, size_t pointer_index) {
156c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getTouchMajor(pointer_index);
157c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
158c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
159c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getTouchMinor(const AInputEvent* motion_event, size_t pointer_index) {
160c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getTouchMinor(pointer_index);
161c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
162c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
163c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getToolMajor(const AInputEvent* motion_event, size_t pointer_index) {
164c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getToolMajor(pointer_index);
165c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
166c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
167c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getToolMinor(const AInputEvent* motion_event, size_t pointer_index) {
168c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getToolMinor(pointer_index);
169c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
170c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
171c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getOrientation(const AInputEvent* motion_event, size_t pointer_index) {
172c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getOrientation(pointer_index);
173c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
174c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
1752e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornsize_t AMotionEvent_getHistorySize(const AInputEvent* motion_event) {
176a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistorySize();
177a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
178a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1792e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AMotionEvent_getHistoricalEventTime(AInputEvent* motion_event,
180a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
181a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalEventTime(
182a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            history_index);
183a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
184a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1852e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalRawX(AInputEvent* motion_event, size_t pointer_index,
186a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
187a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawX(
188a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
189a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
190a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1912e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalRawY(AInputEvent* motion_event, size_t pointer_index,
192a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
193a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawY(
194a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
195a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
196a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1972e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalX(AInputEvent* motion_event, size_t pointer_index,
198a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
199a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalX(
200a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
201a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
202a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2032e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalY(AInputEvent* motion_event, size_t pointer_index,
204a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
205a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalY(
206a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
207a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
208a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2092e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalPressure(AInputEvent* motion_event, size_t pointer_index,
210a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
211a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalPressure(
212a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
213a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
214a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2152e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalSize(AInputEvent* motion_event, size_t pointer_index,
216a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
217a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalSize(
218a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
219a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
220a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
221c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalTouchMajor(AInputEvent* motion_event, size_t pointer_index,
222c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
223c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMajor(
224c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
225c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
226c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
227c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalTouchMinor(AInputEvent* motion_event, size_t pointer_index,
228c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
229c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMinor(
230c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
231c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
232c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
233c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalToolMajor(AInputEvent* motion_event, size_t pointer_index,
234c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
235c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMajor(
236c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
237c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
238c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
239c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalToolMinor(AInputEvent* motion_event, size_t pointer_index,
240c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
241c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMinor(
242c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
243c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
244c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
245c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalOrientation(AInputEvent* motion_event, size_t pointer_index,
246c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
247c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalOrientation(
248c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
249c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
250c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
251c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
252682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackbornvoid AInputQueue_attachLooper(AInputQueue* queue, ALooper* looper,
2534fe6c3e51be77e35f40872cdbca6c80f8f8b7ecbJeff Brown        int ident, ALooper_callbackFunc callback, void* data) {
25442c03e579aade011b451e2a13ea3f44a2ef0056aDianne Hackborn    queue->attachLooper(looper, ident, callback, data);
255682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn}
256682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn
257682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackbornvoid AInputQueue_detachLooper(AInputQueue* queue) {
258d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    queue->detachLooper();
259a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
260a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2612c6081ce3593712f30dacd990a97209c791d6cedDianne Hackbornint32_t AInputQueue_hasEvents(AInputQueue* queue) {
262d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    return queue->hasEvents();
263a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
264a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2652e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AInputQueue_getEvent(AInputQueue* queue, AInputEvent** outEvent) {
266d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    return queue->getEvent(outEvent);
267d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn}
268d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
2692c6081ce3593712f30dacd990a97209c791d6cedDianne Hackbornint32_t AInputQueue_preDispatchEvent(AInputQueue* queue, AInputEvent* event) {
2702c6081ce3593712f30dacd990a97209c791d6cedDianne Hackborn    return queue->preDispatchEvent(event) ? 1 : 0;
2712c6081ce3593712f30dacd990a97209c791d6cedDianne Hackborn}
2722c6081ce3593712f30dacd990a97209c791d6cedDianne Hackborn
273d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornvoid AInputQueue_finishEvent(AInputQueue* queue, AInputEvent* event, int handled) {
274d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    queue->finishEvent(event, handled != 0);
275a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
276