Merge commit 'd3cf0544cc7eec8ace3dc3b7fc17b7dac69e0aab'
* commit 'd3cf0544cc7eec8ace3dc3b7fc17b7dac69e0aab':
Optimize VelocityTracker to run in linear time.
Merge commit '75493be9c0b4dd24fc5cddce6ee993ce5f0b2887'
* commit '75493be9c0b4dd24fc5cddce6ee993ce5f0b2887':
Make sure profiling is done only for views that are actually measured, laid out and drawn.
Uses a linked list for efficient pointer addition and removal.
When possible, makes use of the fact that pointer ids are usually in
sorted order to avoid quadratic time lookups when adding new data.
Fixed an incorrect assumption that the pointer count would always change
when old pointers were removed.
Also fixed a bug in InputQueue FinishedCallback recycling.
Change-Id: Ie048d3bb022d39cf4185e2fe43923a861d94c4f3
This change also removes the use of SoftReferences for View's
drawing cache.
A bitmap now creates a PhantomReference enqueued in a reference
queue provided by the new Finalizers class. This queue is polled
from a thread started after forking zygote. That thread is in charge
of clearing the references after GC runs and of calling reclaim()
on them. The reclaim() method is now how finalizers are run.
Note that a PhantomReference cannot be kept in the instance it
refers to, which is why they are kept in a separate List.
Change-Id: If3c1a5e9dc23fa49e34857860d730f5cf5ad5926
The makefile variable USE_OPENGL_RENDERER must be set to true to compile
libhwui and the related code in the JNI layer.
This change also removes obsolete APIs from Canvas that must not be used
and would be confusing if left in. These APIs were remnants of our first
attempt at an OpenGL renderer for the view hierarchy and had not been
taken out before Android 1.0 was released.
Change-Id: I2475ff1307212bab26c926724f3c508681c7dae1
Since orientation sensing has been an issue for numerous users, I
decided a spend a little time experimenting with some possible
improvements. I've settled on a couple major changes:
* Perform all lowpass filtering in spherical coordinates, not
cartesian. Since the rotations are what we're really concerned
with, this makes more sense and gives more consistent results.
* Introduce a system of tracking "distrust" in the current data, based
on external acceleration and on tilt. The basic idea is after a
signal of unreliable data -- repeated acceleration or
nearly-horizontal tilt -- we wait for things to "stabilize" for some
number of ticks before we start trusting the data again. This is an
extension of the basic lowpass filtering. One simple example is
after the phone is picked up off a table, we ignore the first few
readings. Another example is while the phone is under external
acceleration for a while (i.e. in a car mount on a rough road), if a
single "good" reading comes in, we distrust it, under the assumption
that it was probably just a lucky reading (i.e. the magnitude
happened to be close to that of gravity by chance).
These changes have allowed me to relax other constraints, such as the
filtering time constants, the maximum deviation from gravity, and the
max tilt before we start distrusting data.
The net effect is that orientation changes happen more quickly and can
happen under a wider variety of conditions, but false changes due to
tilt and acceleration are still avoided well. I think the improvement
is subtle, but it's the best I've come up with in my limited time.
I've also included some refactoring and additonal comments to try and
further clarify the (somewhat twisted) logic.
Change-Id: I34c7297bd2061fae8317ffefd32a85c7538a3efb
Rendering is implementing by rasterizing the paths into A8 textures.
This cna be extremely inefficient if the path changes often.
Change-Id: I609343f304ae38e0d319359403ee73b9b5b3c93a
Hardware acceleration can now be enabled/disabled locally on each activity
declared in the manifest. It can also be enabled/disabled directly on a
window through the WindowManager.LayoutParams.
Change-Id: I91dd0b26c4e7eb8cd7288e523ed6b7bda6d0990b
Improved PointerLocation tool to use VelocityTracker more efficiently
and correctly when multiple pointers are down.
Fixed a bug in TouchInputMapper where it was not correctly copying
the id to index map in the last touch data. This could cause strange
behavior on secondary pointer up events.
Also added finished callback pooling in InputQueue.
Change-Id: Ia85e52ac2fb7350960ea1d7edfbe81a1b3e8267b
With this change, Skia shaders can easily be applied to any mesh. This change also
supports ComposeShader. For instance, this can be used to blend a gradient and a
bitmap togehter and paint a string of text with the result.
Change-Id: I701c2f9cf7f89b2ff58005e8a1d0d80ccf4a4aea
Added a new asynchronous injection mode and made the existing
synchronization mechanism more robust.
Change-Id: Ia4aa04fd9b75ea2461a844c5b7933c831c1027e6
Added a new asynchronous injection mode and made the existing
synchronization mechanism more robust.
Change-Id: I0464f70ff5cbd519dbb02686b2cb5d810fe7dbb2
Context menu entries have been moved to a contextual mode in the action bar.
Change Input Method has been removed and *should be added to the system bar instead*.
Add word to dictionnary has also been removed and should now be done using the suggestioni
bar "tap on word to add" feature.
Change-Id: I767373f53515b2d6a06500321b4b12ed0b05a9b6
Merge commit '9795a25da060f9a7df87da8ab43fb1086d4322a5'
* commit '9795a25da060f9a7df87da8ab43fb1086d4322a5':
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
With this change, all the vertex and fragment shaders used by the GL
renderer are now generated based on a program description supplied
by the caller. This allows the renderer to generate a large number
of shaders without having to write all the possible combinations by
hand. The generated shaders are stored in a program cache.
Change-Id: If54d286e77ae021c724d42090da476df12a18ebb
ContextualMode renamed to ActionMode. Adds a reference to the action
bar and reduces confusion around things named "Context".
Change-Id: Ia5098b1d0799a0ece0810c34e6696eda039fb005