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
Merge commit 'f4a502a235e9f9ea0bcd2d5ca4981dc6e1a619c4' into kraken
* commit 'f4a502a235e9f9ea0bcd2d5ca4981dc6e1a619c4':
Don't adjust lights if screen or button brightness is changed when the screen is off.
Merge commit 'a2c6d5bf308181c019ade0aac6d25fe33dc3d76c' into kraken
* commit 'a2c6d5bf308181c019ade0aac6d25fe33dc3d76c':
do not merge: cherry-picked 929b4855b8208d36272769e8eeaa6cd2823b94c0 from master branch
* changes:
update EGL headers to the latest
update GL ES stub libraries with the new GL ES headers
fix OpenGL ES extension headers from khronos
update the OpenGL ES headers to the latest
* changes:
Add a test item the turns on a bunch of extra icons.
Move the status bar icon list, hopefully for the last time.
Call into the notification manager when the panel is revealed.
Move status_bar_latest_event and LatestItemView into SystemUI.apk.
Start the status bar service based on a configuration option, instead of trampolining through a braodcast receiver.
Require the STATUS_BAR_SERVICE permission for something to be the status bar.
Handle errors inflating notifications (and their icons).
* changes:
dead code removal
Cap the number of notifications that a given package can post.
Move the usb mass storage notification & activity into SystemUI.apk.
Add some disabled logging and another test case for reapplying the notification views.
Surfaces can now be parcelized and sent to remote
processes. When a surface crosses a process
boundary, it looses its connection with the
current process and gets attached to the new one.
Change-Id: I39c7b055bcd3ea1162ef2718d3d4b866bf7c81c0
Merge commit '75b6a6b972e6b18143fd629d3d9c824c442c5f4c' into kraken
* commit '75b6a6b972e6b18143fd629d3d9c824c442c5f4c':
Fix 2737842: Disable KeguardManager API if device policy is enabled
Merge commit '71d73a0dfc110d0bdfc1b7ba385db3e2cfe007e5' into kraken
* commit '71d73a0dfc110d0bdfc1b7ba385db3e2cfe007e5':
Add a method to hide/show a SurfaceView's surface.
Merge commit 'bde25c207731783a62e3611586fe05cd35add0d9' into kraken
* commit 'bde25c207731783a62e3611586fe05cd35add0d9':
Fix 2737842: disable keyguard API when device policy is enabled.
Merge commit 'ac24d23cd4a96f38b4e9cb0318a7c298794b9b6a' into kraken
* commit 'ac24d23cd4a96f38b4e9cb0318a7c298794b9b6a':
Don't bring up Launcher until after boot complete