6f71d0fedbb04c048a7294976103e42f0f046641 |
|
24-Oct-2010 |
Jeff Brown <jeffbrown@google.com> |
Filter virtual keys after touches. (DO NOT MERGE) Adds a new virtualKeyQuietTimeMillis configuration resource that sets the duration for which virtual keys will be dropped after recent touches on screen. The default value is 0; it is intended to be overridden per device using a resource overlay. This change is designed to help in two cases: 1. Swipes from touchscreen into virtual key area. 2. Accidental taps in virtual key area while using on-screen keyboard. Bug: 3089163 Change-Id: Id6733c83c2e2bc8d9553aa0e5c1fd74b741bec6e
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
eb9f7a01b0f501a535d872a957c1102ebb13d1c7 |
|
30-Oct-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix policy issues when screen is off. (DO NOT MERGE) Rewrote interceptKeyBeforeQueueing to make the handling more systematic. Behavior should be identical except: - We never pass keys to applications when the screen is off and the keyguard is not showing (the proximity sensor turned off the screen). Previously we passed all non-wake keys through in this case which caused a bug on Crespo where the screen would come back on if a soft key was held at the time of power off because the resulting key up event would sneak in just before the keyguard was shown. It would then be passed through to the dispatcher which would poke user activity and wake up the screen. - We propagate the key flags when broadcasting media keys which ensures that recipients can tell when the key is canceled. - We ignore endcall or power if canceled (shouldn't happen anyways). Changed the input dispatcher to not poke user activity for canceled events since they are synthetic and should not wake the device. Changed the lock screen so that it does not poke the wake lock when the grab handle is released. This fixes a bug where the screen would come back on immediately if the power went off while the user was holding one of the grab handles because the sliding tab would receive an up event after screen turned off and release the grab handles. Bug: 3144874 Change-Id: Iebb91e10592b4ef2de4b1dd3a2e1e4254aacb697
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
3122e4488aa0749cbec9890ace22c366e35350c3 |
|
12-Oct-2010 |
Jeff Brown <jeffbrown@google.com> |
Improve the input policy handling a bit. Fixed some issues with Monkeys turning off their own screens. Ook ook! Added some more comments to explain what's going on. Change-Id: Id2bc0466161a642a73ef7ef97725d1c81e984b12
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
b931a1b4183386ba840edc1bcc507eccf11b5cbe |
|
11-Oct-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix an event injection bug when the policy is bypassed. Added the concept of a "trusted" event to distinguish between events from attached input devices or trusted injectors vs. other applications. This change enables us to move certain policy decisions out of the dispatcher and into the policy itself where they can be handled more systematically. Change-Id: I4d56fdcdd31aaa675d452088af39a70c4e039970
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
b699726018a0049665d8ad6b90dbc5af0e18f135 |
|
09-Oct-2010 |
Jeff Brown <jeffbrown@google.com> |
Added more robust tracking and cancelation of events. This change fixes several issues where events would be dropped in the input dispatch pipeline in such a way that the dispatcher could not accurately track the state of the input device. Given more robust tracking, we can now also provide robust cancelation of input events in cases where an application might otherwise become out of sync with the event stream due to ANR, app switch, policy decisions, or forced focus transitions. Pruned some of the input dispatcher log output. Moved the responsibility for calling intercept*BeforeQueueing into the input dispatcher instead of the input reader and added support for early interception of injected events for events coming from trusted sources. This enables behaviors like injection of media keys while the screen is off, haptic feedback of injected virtual keys, so injected events become more "first class" in a way. Change-Id: Iec6ff1dd21e5f3c7feb80ea4feb5382bd090dbd9
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
f2f487183052865d50c004a835360be1728b5a52 |
|
02-Oct-2010 |
Jeff Brown <jeffbrown@google.com> |
Minor logging changes to input dispatcher to help with debugging. Added dumpsys reporting to EventHub. Made the formatting a bit clearer. Added 'Locked' suffix to some internal methods of EventHub. Change-Id: Ic449560bcce378f6361895d27c66854e9724abb0
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
0eaf3931a31c29f3a3883aab426b595c231c2a58 |
|
01-Oct-2010 |
Jeff Brown <jeffbrown@google.com> |
Support haptic feedback for virtual keys defined in key layout. Change-Id: I83e4108a87332692e03791dc066206becbc7941f
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
01ce2e9eee41cc0c24b0d16465710a28ea337d5d |
|
27-Sep-2010 |
Jeff Brown <jeffbrown@google.com> |
Add suuport for splitting touch events across windows. This feature is currently used to enable dragging the start and end selection handles of a TextView at the same time. Could be used for other things later. Deleted some dead code in ArrowKeyMovementMethod and CursorControllers. Change-Id: I930accd97ca1ca1917aab8a807db2c950fc7b409
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
57c59376f4432bdb285acb242bd9b3bec81f6bca |
|
22-Sep-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix race reading input configuration during system startup. Change-Id: I9360c4ec5c29937fce06b44ffc71fca58c8b3d5f
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
54a1825121d006d4a4dcbbadf4eac9910f44ef8c |
|
16-Sep-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix app switch latency optimization. This optimization was broken due to recent changes in how ANRs are handled. Change-Id: Ic99248a12755fadac8d4893e7d305b773e038d3d
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
519e024d1e682ca458cc2dab743589a12992c0e1 |
|
16-Sep-2010 |
Jeff Brown <jeffbrown@google.com> |
Make input dispatcher only ANR for foreground windows. Redesigned the input dispatcher's ANR timeout mechanism so it is much closer to Froyo's policy. ANR is only ever signalled if the dispatcher is waiting on a window to finish processing its previous event(s) and there is new pending input. In the old code, we tracked the dispatch timeout separately for each input channel. This was somewhat complicated and also resulted in the situation where applications could ANR long after the user had pushed them into the background. Change-Id: I666ecada0952d4b95f1d67b9f733842b745c7f4b
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
b88102f5b7e51552a3576cf197b4c8cf96f193d1 |
|
08-Sep-2010 |
Jeff Brown <jeffbrown@google.com> |
Input dispatcher ANR handling enhancements. This change is essentially a rewrite of the main input dispatcher loop with the target identification folded in. Since the input dispatcher now has all of the window state, it can make better decisions about when to ANR. Added a .5 second deadline for processing app switch keys. This behavior predates Gingerbread but had not previously been ported. Fixed some timing inaccuracies in the ANR accounting that could cause applications to ANR sooner than they should have. Added a mechanism for tracking key and motion events that have been dispatched to a window so that appropriate cancelation events can be synthesized when recovering from ANR. This change helps to keep applications in sync so they don't end up with stuck buttons upon recovery from ANRs. Added more comments to describe the tricky parts of PollLoop. Change-Id: I13dffca27acb436fc383980db536abc4d8b9e6f1
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
b21fb104cc95fe7e5daf3b3626241e525c39a3f1 |
|
07-Sep-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix key repeat delay. Change-Id: I6216e082324ee29bf50e37acc673350ca5417c4d
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
85a3176704b5bfbeece9bd928369fbb76eec7dc6 |
|
02-Sep-2010 |
Jeff Brown <jeffbrown@google.com> |
Add support for secure views. Added the MotionEvent.FLAG_WINDOW_IS_OBSCURED flag which is set by the input manager whenever another visible window is partly or wholly obscured the target of a touch event so that applications can filter touches accordingly. Added a "filterTouchesWhenObscured" attribute to View which can be used to enable filtering of touches when the view's window is obscured. Change-Id: I936d9c85013fd2d77fb296a600528d30a29027d2
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
8d60866e2100db70ecf0502c14768a384514d7e9 |
|
30-Aug-2010 |
Jeff Brown <jeffbrown@google.com> |
Input device calibration and capabilities. Finished the input device capability API. Added a mechanism for calibrating touch devices to obtain more accurate information about the touch contact area. Improved pointer location to show new coordinates and capabilities. Optimized pointer location display and formatting to avoid allocating large numbers of temporary objects. The GC churn was causing the application to stutter very badly when more than a couple of fingers were down). Added more diagnostics. Change-Id: Ie25380278ed6f16c5b04cd9df848015850383498
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
3d8c9bdbed0c31143227697bd0d94fd234fe08ad |
|
19-Aug-2010 |
Jeff Brown <jeffbrown@google.com> |
Raise motion event throttle to 60Hz from 35Hz. Bug: 2931575 Change-Id: Ib8b1793addcda74b2fa6de2ce61b6133b8ffda9d
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
ae9fc03bdccda709101291bbcd3beaa5b6daebfc |
|
19-Aug-2010 |
Jeff Brown <jeffbrown@google.com> |
Add support for throttling motion events. Change-Id: I24b3a17753e91ecda60a60fe5cd2e6b3260e033d
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
2cbecea4c9627d95377fc3e3b8a319116cee7feb |
|
18-Aug-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix possible race conditions during channel unregistration. Previously, the input dispatcher assumed that the input channel's receive pipe file descriptor was a sufficiently unique identifier for looking up input channels in its various tables. However, it can happen that an input channel is disposed and then a new input channel is immediately created that reuses the same file descriptor. Ordinarily this is not a problem, however there is a small opportunity for a race to arise in InputQueue. When InputQueue receives an input event from the dispatcher, it generates a finishedToken that encodes the channel's receive pipe fd, and a sequence number. The finishedToken is used by the ViewRoot as a handle for the event so that it can tell the InputQueue when the event has finished being processed. Here is the race: 1. InputQueue receives an input event, assigns a new finishedToken. 2. ViewRoot begins processing the input event. 3. During processing, ViewRoot unregisters the InputChannel. 4. A new InputChannel is created and is registered with the Input Queue. This InputChannel happens to have the same receive pipe fd as the one previously registered. 5. ViewRoot tells the InputQueue that it has finished processing the input event, passing along the original finishedToken. 6. InputQueue throws an exception because the finishedToken's receive pipe fd is registered but the sequence number is incorrect so it assumes that the client has called finish spuriously. The fix is to include a unique connection id within the finishedToken so that the InputQueue can accurately confirm that the token belongs to the currently registered InputChannel rather than to an old one that happened to have the same receive pipe fd. When it notices this, it ignores the spurious finish. I've also made a couple of other small changes to avoid similar races elsewhere. This patch set also includes a fix to synthesize a finished signal when the input channel is unregistered on the client side to help keep the server and client in sync. Bug: 2834068 Change-Id: I1de34a36249ab74c359c2c67a57e333543400f7b
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
a41ca77fabe1c7ad12ebb9b69b9e786c07d49fa0 |
|
11-Aug-2010 |
Jeff Brown <jeffbrown@google.com> |
Add support for the PointerLocation overlay. This change involves adding a new method to IWindowManager, monitorInput() that returns an InputChannel to receive a copy of all input that is dispatched to applications. The caller must have the READ_INPUT_STATE permission to make this request (similar to other window manager methods such as getKeycodeState). Change-Id: Icd14d810174a5b2928671ef16de73af88302aea0
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
6ec402b5ae33c8927694d8522b4cc6a5c8ba974e |
|
29-Jul-2010 |
Jeff Brown <jeffbrown@google.com> |
DO NOT MERGE: Fix input event injection ANRs on UI thread. Added a new asynchronous injection mode and made the existing synchronization mechanism more robust. Change-Id: Ia4aa04fd9b75ea2461a844c5b7933c831c1027e6
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
6d0fec2de3601821f4f44eeb7d7deedebb2b7117 |
|
24-Jul-2010 |
Jeff Brown <jeffbrown@google.com> |
Refactor input reader to support new device types more easily. Refactored the input reader so that each raw input protocol is handled by a separate subclass of the new InputMapper type. This way, behaviors pertaining to keyboard, trackballs, touchscreens, switches and other devices are clearly distinguished for improved maintainability. Added partial support for describing capabilities of input devices (incomplete and untested for now, will be fleshed out in later commits). Simplified EventHub interface somewhat since InputReader is taking over more of the work. Cleaned up some of the interactions between InputManager and WindowManagerService related to reading input state. Fixed swiping finger from screen edge into display area. Added logging of device information to 'dumpsys window'. Change-Id: I17faffc33e3aec3a0f33f0b37e81a70609378612
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
00ba884436dc8b222ad850c73c936d87bf4e84de |
|
17-Jul-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix individual pointer id up/down reporting. Fix a minor threading bug in InputManager dump. Change-Id: Ic2eecf7df5a8dc9f40561fcb03ebe58a2c073778
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
e33348ba54cd68d6936cffd4507037c14d4b10c2 |
|
16-Jul-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix bug with phantom input windows. Add dumpsys integration for the native input dispatcher. Add some InputDevice API stubs. Add an appendFormat helper method to String8 for printf style string formatting mainly for debugging purposes. Use generic ArrayList<WindowState> everywhere in WindowManagerService to eliminate unnecessary casts all over. Change-Id: I9d1e3bd90eb7222d10620200477f11b7bfd25e44
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
c5ed5910c9ef066cec6a13bbb404ec57b1e92637 |
|
15-Jul-2010 |
Jeff Brown <jeffbrown@google.com> |
Add support for new input sources. Added several new coordinate values to MotionEvents to capture touch major/minor area, tool major/minor area and orientation. Renamed NDK input constants per convention. Added InputDevice class in Java which will eventually provide useful information about available input devices. Added APIs for manufacturing new MotionEvent objects with multiple pointers and all necessary coordinate data. Fixed a bug in the input dispatcher where it could get stuck with a pointer down forever. Fixed a bug in the WindowManager where the input window list could end up containing stale removed windows. Fixed a bug in the WindowManager where the input channel was being removed only after the final animation transition had taken place which caused spurious WINDOW DIED log messages to be printed. Change-Id: Ie55084da319b20aad29b28a0499b8dd98bb5da68
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
fd03582995e0fce963dd0fa0669e3211b74c0dd7 |
|
01-Jul-2010 |
Jeff Brown <jeffbrown@google.com> |
Add initial gamepad support. Change-Id: I0439648f6eb5405f200e4223c915eb3a418b32b9
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
00fa7bdd69f0868fd17ea7c881c771d785b2fbbd |
|
03-Jul-2010 |
Jeff Brown <jeffbrown@google.com> |
More native input dispatch work. Removed old input dispatch code. Refactored the policy callbacks. Pushed a tiny bit of the power manager state down to native. Fixed long press on MENU. Made the virtual key detection and cancelation a bit more precise. Change-Id: I5d8c1062f7ea0ab3b54c6fadb058c4d5f5a9e02e
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
d0097871828bb7d5d6eec06cadd92c2e3358849b |
|
30-Jun-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix injection of specially intercepted keys like HOME. This change mainly unwinds a premature optimization in the dispatch pipeline. To test HOME injection, run 'adb shell input keyevent 3'. Change-Id: I1c4b7377c205da7c898014b8b07fc6dc1d46e4dd
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
0b72e82c5f5d4ab709539c3490d6c7023f680dff |
|
30-Jun-2010 |
Jeff Brown <jeffbrown@google.com> |
Fix native input dispatch in the emulator. Set a default orientation of ROTATION_0. Added some more careful checks based on whether we have valid absolute axis information from the driver. Reset key repeating during configuration changes since the keyboard device may have been removed. Change-Id: I685960828acffcb17595fc5683309e8064a76714
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
349703effce5acc53ed96f7ed8556131f0c65e18 |
|
22-Jun-2010 |
Jeff Brown <jeffbrown@google.com> |
Native input event dispatching. Target identification is now fully native. Fixed a couple of minor issues related to input injection. Native input enabled by default, can be disabled by setting WindowManagerPolicy.ENABLE_NATIVE_INPUT_DISPATCH to false. Change-Id: I7edf66ed3e987cc9306ad4743ac57a116af452ff
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
7fbdc84e87dd3a0e196b9803bb04495d11e9cb8a |
|
18-Jun-2010 |
Jeff Brown <jeffbrown@google.com> |
More native input event dispatching. Added ANRs handling. Added event injection. Fixed a NPE ActivityManagerServer writing ANRs to the drop box. Fixed HOME key interception. Fixed trackball reporting. Fixed pointer rotation in landscape mode. Change-Id: I50340f559f22899ab924e220a78119ffc79469b7
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
5c225b1680e696ae8bbf505a1997d6f720672f74 |
|
16-Jun-2010 |
Jeff Brown <jeffbrown@google.com> |
Even more native input dispatch work in progress. Added more tests. Fixed a regression in Vector. Fixed bugs in pointer tracking. Fixed a starvation issue in PollLoop when setting or removing callbacks. Fixed a couple of policy nits. Modified the internal representation of MotionEvent to be more efficient and more consistent. Added code to skip/cancel virtual key processing when there are multiple pointers down. This helps to better disambiguate virtual key presses from stray touches (such as cheek presses). Change-Id: I2a7d2cce0195afb9125b23378baa94fd2fc6671c
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
9c3cda04d969912bc46184f2b326d1db95e0aba5 |
|
15-Jun-2010 |
Jeff Brown <jeffbrown@google.com> |
More work in progress on native events. Refactored the code to eliminate potential deadlocks due to re-entrant calls from the policy into the dispatcher. Also added some plumbing that will be used to notify the framework about ANRs. Change-Id: Iba7a10de0cb3c56cd7520d6ce716db52fdcc94ff
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|
46b9ac0ae2162309774a7478cd9d4e578747bfc2 |
|
23-Apr-2010 |
Jeff Brown <jeffbrown@google.com> |
Native input dispatch rewrite work in progress. The old dispatch mechanism has been left in place and continues to be used by default for now. To enable native input dispatch, edit the ENABLE_NATIVE_DISPATCH constant in WindowManagerPolicy. Includes part of the new input event NDK API. Some details TBD. To wire up input dispatch, as the ViewRoot adds a window to the window session it receives an InputChannel object as an output argument. The InputChannel encapsulates the file descriptors for a shared memory region and two pipe end-points. The ViewRoot then provides the InputChannel to the InputQueue. Behind the scenes, InputQueue simply attaches handlers to the native PollLoop object that underlies the MessageQueue. This way MessageQueue doesn't need to know anything about input dispatch per-se, it just exposes (in native code) a PollLoop that other components can use to monitor file descriptor state changes. There can be zero or more targets for any given input event. Each input target is specified by its input channel and some parameters including flags, an X/Y coordinate offset, and the dispatch timeout. An input target can request either synchronous dispatch (for foreground apps) or asynchronous dispatch (fire-and-forget for wallpapers and "outside" targets). Currently, finding the appropriate input targets for an event requires a call back into the WindowManagerServer from native code. In the future this will be refactored to avoid most of these callbacks except as required to handle pending focus transitions. End-to-end event dispatch mostly works! To do: event injection, rate limiting, ANRs, testing, optimization, etc. Change-Id: I8c36b2b9e0a2d27392040ecda0f51b636456de25
/frameworks/base/services/jni/com_android_server_InputManager.cpp
|