input.cpp revision a44dd26a75e24cc021802288fb81f4761e47be6b
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>
21b93a03f841d93498bfea6cc92a22faa34bce1337Mathias Agopian#include <androidfw/Input.h>
22b93a03f841d93498bfea6cc92a22faa34bce1337Mathias Agopian#include <androidfw/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>
28a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright#include <android_runtime/android_view_InputQueue.h>
29d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
30a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn#include <poll.h>
316d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brown#include <errno.h>
32a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
33a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornusing android::InputEvent;
34a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wrightusing android::InputQueue;
35a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornusing android::KeyEvent;
36a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wrightusing android::Looper;
37a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackbornusing android::MotionEvent;
386d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brownusing android::sp;
396d0fec2de3601821f4f44eeb7d7deedebb2b7117Jeff Brownusing android::Vector;
40a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
412e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AInputEvent_getType(const AInputEvent* event) {
42a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const InputEvent*>(event)->getType();
43a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
44a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
452e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AInputEvent_getDeviceId(const AInputEvent* event) {
46a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const InputEvent*>(event)->getDeviceId();
47a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
48a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
49c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownint32_t AInputEvent_getSource(const AInputEvent* event) {
50c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const InputEvent*>(event)->getSource();
51a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
52a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
532e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getAction(const AInputEvent* key_event) {
54a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getAction();
55a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
56a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
572e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getFlags(const AInputEvent* key_event) {
58a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getFlags();
59a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
60a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
612e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getKeyCode(const AInputEvent* key_event) {
62a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getKeyCode();
63a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
64a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
652e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getScanCode(const AInputEvent* key_event) {
66a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getScanCode();
67a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
68a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
692e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getMetaState(const AInputEvent* key_event) {
70a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getMetaState();
71a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
722e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AKeyEvent_getRepeatCount(const AInputEvent* key_event) {
73a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getRepeatCount();
74a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
75a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
762e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AKeyEvent_getDownTime(const AInputEvent* key_event) {
77a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getDownTime();
78a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
79a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
80c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
812e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AKeyEvent_getEventTime(const AInputEvent* key_event) {
82a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const KeyEvent*>(key_event)->getEventTime();
83a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
84a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
852e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getAction(const AInputEvent* motion_event) {
86a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getAction();
87a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
88a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
8985a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brownint32_t AMotionEvent_getFlags(const AInputEvent* motion_event) {
9085a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getFlags();
9185a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown}
9285a3176704b5bfbeece9bd928369fbb76eec7dc6Jeff Brown
932e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getMetaState(const AInputEvent* motion_event) {
94a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getMetaState();
95a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
96a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
97fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brownint32_t AMotionEvent_getButtonState(const AInputEvent* motion_event) {
98fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown    return static_cast<const MotionEvent*>(motion_event)->getButtonState();
99fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown}
100fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown
1012e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getEdgeFlags(const AInputEvent* motion_event) {
102a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return reinterpret_cast<const MotionEvent*>(motion_event)->getEdgeFlags();
103a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
104a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1052e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AMotionEvent_getDownTime(const AInputEvent* motion_event) {
106a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getDownTime();
107a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
108a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1092e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AMotionEvent_getEventTime(const AInputEvent* motion_event) {
110a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getEventTime();
111a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
112a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1132e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getXOffset(const AInputEvent* motion_event) {
114a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getXOffset();
115a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
116a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1172e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getYOffset(const AInputEvent* motion_event) {
118a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getYOffset();
119a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
120a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1212e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getXPrecision(const AInputEvent* motion_event) {
122a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getXPrecision();
123a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
124a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1252e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getYPrecision(const AInputEvent* motion_event) {
126a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getYPrecision();
127a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
128a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1292e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornsize_t AMotionEvent_getPointerCount(const AInputEvent* motion_event) {
130a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getPointerCount();
131a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
132a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1332e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AMotionEvent_getPointerId(const AInputEvent* motion_event, size_t pointer_index) {
134a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getPointerId(pointer_index);
135a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
136a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
137fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brownint32_t AMotionEvent_getToolType(const AInputEvent* motion_event, size_t pointer_index) {
138fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown    return static_cast<const MotionEvent*>(motion_event)->getToolType(pointer_index);
139fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown}
140fe9f8ab03a63b1037f07dd85799fbea80ec6adaaJeff Brown
1412e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getRawX(const AInputEvent* motion_event, size_t pointer_index) {
142a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getRawX(pointer_index);
143a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
144a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1452e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getRawY(const AInputEvent* motion_event, size_t pointer_index) {
146a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getRawY(pointer_index);
147a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
148a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1492e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getX(const AInputEvent* motion_event, size_t pointer_index) {
150a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getX(pointer_index);
151a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
152a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1532e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getY(const AInputEvent* motion_event, size_t pointer_index) {
154a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getY(pointer_index);
155a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
156a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1572e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getPressure(const AInputEvent* motion_event, size_t pointer_index) {
158a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getPressure(pointer_index);
159a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
160a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1612e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getSize(const AInputEvent* motion_event, size_t pointer_index) {
162a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getSize(pointer_index);
163a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
164a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
165c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getTouchMajor(const AInputEvent* motion_event, size_t pointer_index) {
166c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getTouchMajor(pointer_index);
167c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
168c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
169c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getTouchMinor(const AInputEvent* motion_event, size_t pointer_index) {
170c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getTouchMinor(pointer_index);
171c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
172c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
173c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getToolMajor(const AInputEvent* motion_event, size_t pointer_index) {
174c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getToolMajor(pointer_index);
175c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
176c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
177c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getToolMinor(const AInputEvent* motion_event, size_t pointer_index) {
178c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getToolMinor(pointer_index);
179c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
180c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
181c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getOrientation(const AInputEvent* motion_event, size_t pointer_index) {
182c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getOrientation(pointer_index);
183c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
184c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
18591c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brownfloat AMotionEvent_getAxisValue(const AInputEvent* motion_event,
18691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown        int32_t axis, size_t pointer_index) {
18791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getAxisValue(axis, pointer_index);
18891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown}
18991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown
1902e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornsize_t AMotionEvent_getHistorySize(const AInputEvent* motion_event) {
191a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistorySize();
192a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
193a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
1942e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint64_t AMotionEvent_getHistoricalEventTime(AInputEvent* motion_event,
195a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
196a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalEventTime(
197a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            history_index);
198a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
199a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2002e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalRawX(AInputEvent* motion_event, size_t pointer_index,
201a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
202a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawX(
203a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
204a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
205a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2062e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalRawY(AInputEvent* motion_event, size_t pointer_index,
207a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
208a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalRawY(
209a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
210a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
211a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2122e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalX(AInputEvent* motion_event, size_t pointer_index,
213a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
214a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalX(
215a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
216a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
217a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2182e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalY(AInputEvent* motion_event, size_t pointer_index,
219a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
220a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalY(
221a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
222a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
223a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2242e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalPressure(AInputEvent* motion_event, size_t pointer_index,
225a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
226a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalPressure(
227a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
228a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
229a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2302e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornfloat AMotionEvent_getHistoricalSize(AInputEvent* motion_event, size_t pointer_index,
231a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn        size_t history_index) {
232a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn    return static_cast<const MotionEvent*>(motion_event)->getHistoricalSize(
233a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn            pointer_index, history_index);
234a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
235a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
236c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalTouchMajor(AInputEvent* motion_event, size_t pointer_index,
237c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
238c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMajor(
239c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
240c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
241c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
242c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalTouchMinor(AInputEvent* motion_event, size_t pointer_index,
243c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
244c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalTouchMinor(
245c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
246c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
247c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
248c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalToolMajor(AInputEvent* motion_event, size_t pointer_index,
249c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
250c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMajor(
251c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
252c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
253c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
254c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalToolMinor(AInputEvent* motion_event, size_t pointer_index,
255c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
256c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalToolMinor(
257c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
258c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
259c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
260c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brownfloat AMotionEvent_getHistoricalOrientation(AInputEvent* motion_event, size_t pointer_index,
261c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown        size_t history_index) {
262c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalOrientation(
263c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown            pointer_index, history_index);
264c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown}
265c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
26691c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brownfloat AMotionEvent_getHistoricalAxisValue(const AInputEvent* motion_event,
26791c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown        int32_t axis, size_t pointer_index, size_t history_index) {
26891c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown    return static_cast<const MotionEvent*>(motion_event)->getHistoricalAxisValue(
26991c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown            axis, pointer_index, history_index);
27091c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown}
27191c69ab01539f7ba28708f41ec1835cc2920d0a0Jeff Brown
272c5ed5910c9ef066cec6a13bbb404ec57b1e92637Jeff Brown
273682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackbornvoid AInputQueue_attachLooper(AInputQueue* queue, ALooper* looper,
2744fe6c3e51be77e35f40872cdbca6c80f8f8b7ecbJeff Brown        int ident, ALooper_callbackFunc callback, void* data) {
275a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    InputQueue* iq = static_cast<InputQueue*>(queue);
276a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    Looper* l = static_cast<Looper*>(looper);
277a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    iq->attachLooper(l, ident, callback, data);
278682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn}
279682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackborn
280682674154e3fe88f6061245145f934f25f1a2eb8Dianne Hackbornvoid AInputQueue_detachLooper(AInputQueue* queue) {
281a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    InputQueue* iq = static_cast<InputQueue*>(queue);
282a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    iq->detachLooper();
283a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
284a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2852c6081ce3593712f30dacd990a97209c791d6cedDianne Hackbornint32_t AInputQueue_hasEvents(AInputQueue* queue) {
286a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    InputQueue* iq = static_cast<InputQueue*>(queue);
287a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    return iq->hasEvents();
288a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
289a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn
2902e9f93e8db509d5236229dc8540e0904c5dbb9f5Dianne Hackbornint32_t AInputQueue_getEvent(AInputQueue* queue, AInputEvent** outEvent) {
291a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    InputQueue* iq = static_cast<InputQueue*>(queue);
292a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    InputEvent* event;
293a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    int32_t res = iq->getEvent(&event);
294a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    *outEvent = event;
295a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    return res;
296d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn}
297d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackborn
2982c6081ce3593712f30dacd990a97209c791d6cedDianne Hackbornint32_t AInputQueue_preDispatchEvent(AInputQueue* queue, AInputEvent* event) {
299a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    InputQueue* iq = static_cast<InputQueue*>(queue);
300a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    InputEvent* e = static_cast<InputEvent*>(event);
301a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    return iq->preDispatchEvent(e) ? 1 : 0;
3022c6081ce3593712f30dacd990a97209c791d6cedDianne Hackborn}
3032c6081ce3593712f30dacd990a97209c791d6cedDianne Hackborn
304d76b67c340d1564abf8d14d976fdaf83bf2b3320Dianne Hackbornvoid AInputQueue_finishEvent(AInputQueue* queue, AInputEvent* event, int handled) {
305a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    InputQueue* iq = static_cast<InputQueue*>(queue);
306a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    InputEvent* e = static_cast<InputEvent*>(event);
307a44dd26a75e24cc021802288fb81f4761e47be6bMichael Wright    iq->finishEvent(e, handled != 0);
308a95e4cb62f3642cb190d032dbf7dc40d9ecc6973Dianne Hackborn}
309