input.cpp revision 2c6081ce3593712f30dacd990a97209c791d6ced
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>
23682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn#include <utils/PollLoop.h>
24a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
25d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn#include <android_runtime/android_app_NativeActivity.h>
26d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
27a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn#include <poll.h>
28a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
29a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornusing android::InputEvent;
30a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornusing android::KeyEvent;
31a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornusing android::MotionEvent;
32a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
332e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AInputEvent_getType(const AInputEvent* event) {
34a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const InputEvent*>(event)->getType();
35a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
36a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
372e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AInputEvent_getDeviceId(const AInputEvent* event) {
38a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const InputEvent*>(event)->getDeviceId();
39a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
40a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
41c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownint32_t AInputEvent_getSource(const AInputEvent* event) {
42c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const InputEvent*>(event)->getSource();
43a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
44a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
452e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getAction(const AInputEvent* key_event) {
46a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getAction();
47a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
48a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
492e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getFlags(const AInputEvent* key_event) {
50a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getFlags();
51a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
52a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
532e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getKeyCode(const AInputEvent* key_event) {
54a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getKeyCode();
55a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
56a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
572e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getScanCode(const AInputEvent* key_event) {
58a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getScanCode();
59a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
60a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
612e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getMetaState(const AInputEvent* key_event) {
62a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getMetaState();
63a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
642e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getRepeatCount(const AInputEvent* key_event) {
65a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getRepeatCount();
66a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
67a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
682e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AKeyEvent_getDownTime(const AInputEvent* key_event) {
69a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getDownTime();
70a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
71a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
72c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
732e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AKeyEvent_getEventTime(const AInputEvent* key_event) {
74a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getEventTime();
75a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
76a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
772e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getAction(const AInputEvent* motion_event) {
78a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getAction();
79a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
80a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
812e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getMetaState(const AInputEvent* motion_event) {
82a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getMetaState();
83a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
84a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
852e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getEdgeFlags(const AInputEvent* motion_event) {
86a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return reinterpret_cast<const MotionEvent*>(motion_event)->getEdgeFlags();
87a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
88a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
892e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AMotionEvent_getDownTime(const AInputEvent* motion_event) {
90a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getDownTime();
91a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
92a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
932e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AMotionEvent_getEventTime(const AInputEvent* motion_event) {
94a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getEventTime();
95a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
96a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
972e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getXOffset(const AInputEvent* motion_event) {
98a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getXOffset();
99a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
100a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1012e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getYOffset(const AInputEvent* motion_event) {
102a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getYOffset();
103a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
104a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1052e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getXPrecision(const AInputEvent* motion_event) {
106a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getXPrecision();
107a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
108a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1092e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getYPrecision(const AInputEvent* motion_event) {
110a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getYPrecision();
111a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
112a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1132e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornsize_t AMotionEvent_getPointerCount(const AInputEvent* motion_event) {
114a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getPointerCount();
115a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
116a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1172e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getPointerId(const AInputEvent* motion_event, size_t pointer_index) {
118a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getPointerId(pointer_index);
119a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
120a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1212e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getRawX(const AInputEvent* motion_event, size_t pointer_index) {
122a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getRawX(pointer_index);
123a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
124a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1252e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getRawY(const AInputEvent* motion_event, size_t pointer_index) {
126a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getRawY(pointer_index);
127a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
128a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1292e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getX(const AInputEvent* motion_event, size_t pointer_index) {
130a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getX(pointer_index);
131a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
132a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1332e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getY(const AInputEvent* motion_event, size_t pointer_index) {
134a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getY(pointer_index);
135a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
136a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1372e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getPressure(const AInputEvent* motion_event, size_t pointer_index) {
138a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getPressure(pointer_index);
139a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
140a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1412e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getSize(const AInputEvent* motion_event, size_t pointer_index) {
142a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getSize(pointer_index);
143a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
144a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
145c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getTouchMajor(const AInputEvent* motion_event, size_t pointer_index) {
146c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getTouchMajor(pointer_index);
147c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
148c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
149c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getTouchMinor(const AInputEvent* motion_event, size_t pointer_index) {
150c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getTouchMinor(pointer_index);
151c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
152c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
153c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getToolMajor(const AInputEvent* motion_event, size_t pointer_index) {
154c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getToolMajor(pointer_index);
155c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
156c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
157c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getToolMinor(const AInputEvent* motion_event, size_t pointer_index) {
158c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getToolMinor(pointer_index);
159c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
160c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
161c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getOrientation(const AInputEvent* motion_event, size_t pointer_index) {
162c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getOrientation(pointer_index);
163c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
164c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
1652e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornsize_t AMotionEvent_getHistorySize(const AInputEvent* motion_event) {
166a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistorySize();
167a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
168a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1692e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AMotionEvent_getHistoricalEventTime(AInputEvent* motion_event,
170a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
171a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalEventTime(
172a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            history_index);
173a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
174a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1752e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalRawX(AInputEvent* motion_event, size_t pointer_index,
176a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
177a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawX(
178a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
179a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
180a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1812e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalRawY(AInputEvent* motion_event, size_t pointer_index,
182a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
183a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawY(
184a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
185a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
186a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1872e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalX(AInputEvent* motion_event, size_t pointer_index,
188a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
189a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalX(
190a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
191a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
192a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1932e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalY(AInputEvent* motion_event, size_t pointer_index,
194a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
195a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalY(
196a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
197a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
198a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1992e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalPressure(AInputEvent* motion_event, size_t pointer_index,
200a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
201a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalPressure(
202a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
203a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
204a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2052e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalSize(AInputEvent* motion_event, size_t pointer_index,
206a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
207a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalSize(
208a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
209a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
210a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
211c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalTouchMajor(AInputEvent* motion_event, size_t pointer_index,
212c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
213c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMajor(
214c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
215c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
216c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
217c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalTouchMinor(AInputEvent* motion_event, size_t pointer_index,
218c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
219c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMinor(
220c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
221c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
222c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
223c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalToolMajor(AInputEvent* motion_event, size_t pointer_index,
224c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
225c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMajor(
226c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
227c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
228c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
229c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalToolMinor(AInputEvent* motion_event, size_t pointer_index,
230c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
231c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMinor(
232c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
233c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
234c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
235c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalOrientation(AInputEvent* motion_event, size_t pointer_index,
236c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
237c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalOrientation(
238c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
239c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
240c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
241c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
242682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackbornvoid AInputQueue_attachLooper(AInputQueue* queue, ALooper* looper,
24385448bbecd4e0909eecfab15b7c3605f114d0427Dianne Hackborn        ALooper_callbackFunc* callback, void* data) {
244d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    queue->attachLooper(looper, callback, data);
245682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn}
246682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn
247682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackbornvoid AInputQueue_detachLooper(AInputQueue* queue) {
248d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    queue->detachLooper();
249a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
250a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2512c6081ce3593712f30dacd990a97209c791d6cedDianne Hackbornint32_t AInputQueue_hasEvents(AInputQueue* queue) {
252d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    return queue->hasEvents();
253a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
254a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2552e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AInputQueue_getEvent(AInputQueue* queue, AInputEvent** outEvent) {
256d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    return queue->getEvent(outEvent);
257d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn}
258d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
2592c6081ce3593712f30dacd990a97209c791d6cedDianne Hackbornint32_t AInputQueue_preDispatchEvent(AInputQueue* queue, AInputEvent* event) {
2602c6081ce3593712f30dacd990a97209c791d6cedDianne Hackborn    return queue->preDispatchEvent(event) ? 1 : 0;
2612c6081ce3593712f30dacd990a97209c791d6cedDianne Hackborn}
2622c6081ce3593712f30dacd990a97209c791d6cedDianne Hackborn
263d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornvoid AInputQueue_finishEvent(AInputQueue* queue, AInputEvent* event, int handled) {
264d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn    queue->finishEvent(event, handled != 0);
265a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
266