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> 219d3b1a424c5c61e24e9659d15fb353026a00d925Jeff Brown#include <input/Input.h> 229d3b1a424c5c61e24e9659d15fb353026a00d925Jeff Brown#include <input/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 194c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehint64_t AMotionEvent_getHistoricalEventTime(const 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 200c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalRawX(const 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 206c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalRawY(const 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 212c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalX(const 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 218c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalY(const 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 224c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalPressure(const 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 230c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalSize(const 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 236c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalTouchMajor(const 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 242c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalTouchMinor(const 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 248c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalToolMajor(const 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 254c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalToolMinor(const 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 260c01e1ed68885edafd4ad9d62e0f31e7875651867Andrew Hsiehfloat AMotionEvent_getHistoricalOrientation(const 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); 27682b007d7572dceb0981b269338bd1ac6c40496c5Brian Carlstrom Looper* l = reinterpret_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