Commit Graph

628 Commits

Author SHA1 Message Date
Romain Guy
02890fd0f9 Replace Bitmap's finalizers with PhantomReferences.
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
2010-08-09 09:44:40 -07:00
Romain Guy
1639351139 Make libhwui entirely optional.
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
2010-08-08 17:45:07 -07:00
Steve Howard
4938d79160 am d49d4031: am 9fbf00cb: Merge "Slight improvement (hopefully) to orientation sensing." into gingerbread
Merge commit 'd49d4031d654398904d5af30c488a3b32b176122'

* commit 'd49d4031d654398904d5af30c488a3b32b176122':
  Slight improvement (hopefully) to orientation sensing.
2010-08-06 19:06:48 -07:00
Steve Howard
5f531ae6b3 Slight improvement (hopefully) to orientation sensing.
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
2010-08-05 18:26:03 -07:00
Romain Guy
7fbcc0492f Add support for paths.
Rendering is implementing by rasterizing the paths into A8 textures.
This cna be extremely inefficient if the path changes often.

Change-Id: I609343f304ae38e0d319359403ee73b9b5b3c93a
2010-08-05 17:23:49 -07:00
Chet Haase
df030d2c16 View x/y properties now feed into matrix translation
Change-Id: I35d8953ab6c7a511cdf90f3f94a4a1b5ef549fc3
2010-08-04 12:01:51 -07:00
Chris Tate
5bac1cc0b8 am 9f6b16a2: am 5d46ce24: Merge "Enhanced VelocityTracker for > 5 pointers and fixed bugs." into gingerbread
Merge commit '9f6b16a29b62f29496bc652cfec7d6fe9f08c7f4'

* commit '9f6b16a29b62f29496bc652cfec7d6fe9f08c7f4':
  Enhanced VelocityTracker for > 5 pointers and fixed bugs.
2010-08-04 11:12:32 -07:00
Konstantin Lopyrev
bf0d12c2e2 am 77c444dd: am 6fcf3a51: Merge "Improving profiling of views." into gingerbread
Merge commit '77c444dd2bdc9bb2d54fc58420d263a83018190c'

* commit '77c444dd2bdc9bb2d54fc58420d263a83018190c':
  Improving profiling of views.
2010-08-04 11:12:19 -07:00
Romain Guy
529b60a3b1 Add android:hardwareAccelerated to Activity.
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
2010-08-04 10:55:46 -07:00
Chris Tate
5d46ce24cc Merge "Enhanced VelocityTracker for > 5 pointers and fixed bugs." into gingerbread 2010-08-03 12:22:50 -07:00
Konstantin Lopyrev
f8e1219cf8 Improving profiling of views.
Change-Id: I1abb8c21f1769ad55416f37e7bfa1458b80ace63
2010-08-02 19:08:56 -07:00
Romain Guy
7768e02973 Merge "Add support for ColorFilters." 2010-08-02 18:50:28 -07:00
Romain Guy
db1938e0e6 Add support for ColorFilters.
Color filters are fully supported and can be used with shaders.

Change-Id: Id90ccf1c81cb462f2431f366f3f8f710d7971e04
2010-08-02 18:50:56 -07:00
Adam Powell
9168f0b170 Add ActionMode#getMenuInflater() for easier menu inflation in
ActionMode.Callback implementations

Change-Id: If9e7ab0d65598bab537add6c6a452a55c093064f
2010-08-02 16:02:24 -07:00
Jeff Brown
9e2ad36be8 Enhanced VelocityTracker for > 5 pointers and fixed bugs.
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
2010-07-30 20:08:29 -07:00
Romain Guy
eb4e0c3c1c Merge "Refactor Skia shaders handling." 2010-07-30 19:20:09 -07:00
Romain Guy
06f96e2652 Refactor Skia shaders handling.
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
2010-07-30 19:18:16 -07:00
Chet Haase
4de823a759 Merge "Fix problems with moving Views around (invalidation, conflict with layout)" 2010-07-30 17:14:29 -07:00
Chet Haase
8fbf8d2b08 Fix problems with moving Views around (invalidation, conflict with layout)
Change-Id: I38f8f8a4e8082854a53a2975da258b5d946ed525
2010-07-30 15:01:32 -07:00
Jeff Brown
6ec402b5ae 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
2010-07-29 12:54:27 -07:00
Jeff Brown
bbda99d208 Fixed StatusBar ANRs due to input event injection on UI thread.
Added a new asynchronous injection mode and made the existing
synchronization mechanism more robust.

Change-Id: I0464f70ff5cbd519dbb02686b2cb5d810fe7dbb2
2010-07-29 12:19:08 -07:00
Chet Haase
3b69b6f0be Make the new android.animation package public
Change-Id: Iff31676f25fc989707a1e17fb172296014a22c27
2010-07-29 09:09:05 -07:00
Chet Haase
f54a8d7c47 Adding xml declarations for new animation framework
Change-Id: Ic789e47790cf24d1c4b3bcbe9048b992ab93517b
2010-07-28 17:22:14 -07:00
Adam Powell
c9ae2a24dc Add support for setting action mode titles/subtitles by resource ID
Change-Id: Ia0d5234cc16f325eeb29127fb87e2616d67379ec
2010-07-28 17:00:02 -07:00
Gilles Debunne
f788a9fccd TextView with Selection Contextual Mode
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
2010-07-28 15:46:35 -07:00
Jeff Brown
2279971b6f am 9795a25d: am 6d0fec2d: Refactor input reader to support new device types more easily.
Merge commit '9795a25da060f9a7df87da8ab43fb1086d4322a5'

* commit '9795a25da060f9a7df87da8ab43fb1086d4322a5':
  Refactor input reader to support new device types more easily.
2010-07-28 14:27:55 -07:00
Jeff Brown
6d0fec2de3 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
2010-07-28 14:16:15 -07:00
Adam Powell
5d27977f9d Action modes without action bar
Change-Id: I0367ab35e598a17980bd373b30828175f6283acc
2010-07-27 21:04:52 -07:00
Romain Guy
ac670c0433 Generate shaders to cover all possible cases.
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
2010-07-27 19:52:29 -07:00
Adam Powell
6e34636749 Moved context modes into view, renamed to action modes
ContextualMode renamed to ActionMode. Adds a reference to the action
bar and reduces confusion around things named "Context".

Change-Id: Ia5098b1d0799a0ece0810c34e6696eda039fb005
2010-07-26 17:28:45 -07:00
Romain Guy
236d4ee896 Merge "Add text rendering." 2010-07-21 21:34:47 -07:00
Romain Guy
694b519ac6 Add text rendering.
Change-Id: Ibe5a9fa844d531b31b55e43de403a98d49f659b9
2010-07-21 21:33:20 -07:00
Chet Haase
46ea482884 Merge "Fix issue with touch MOVE events on transformed containers" 2010-07-21 13:34:23 -07:00
Chet Haase
ddc8e713ba Fix issue with touch MOVE events on transformed containers
Change-Id: I17e58f2c6acce606a672756d48d20eb0796b69e8
2010-07-21 13:12:53 -07:00
Romain Guy
a1db574036 Add preliminary support for text rendering.
Change-Id: I547eb631dbda24d13960d54b4144fb8908fd8a49
2010-07-20 16:37:27 -07:00
Romain Guy
c0ac193b94 Add support for linear gradients.
Change-Id: Id15329da065045b3f06fdaed615f33cd57608496
2010-07-19 18:44:05 -07:00
Adam Powell
ec66a3a9e0 Fix docs for MenuItem#setShowAsAction
Change-Id: Id68273dde9c0ce904bca7b40aa2e9558880c55c2
2010-07-19 15:51:17 -07:00
Romain Guy
33e72aef05 Make View transforms work again.
Change-Id: I42aa8b5a55d7584ed242e1cb1f7123a6354edbc8
2010-07-17 14:26:44 -07:00
Adam Powell
b5de9f3baf Fix bug 2845609 - Touch event dispatching problem.
Maintain the state of the CANCEL_NEXT_UP_EVENT flag properly.

Change-Id: I5ca22409bf8557c486d02806811b10550c5576eb
2010-07-17 01:51:25 -07:00
Chet Haase
5700c95f40 Merge "Fixing view property invalidation issues" 2010-07-16 17:39:44 -07:00
Romain Guy
ea2604d966 Merge "Add plumbing to support gradients in OpenGL renderer." 2010-07-16 17:13:26 -07:00
Romain Guy
7fac2e1833 Add plumbing to support gradients in OpenGL renderer.
The LinearGradient class keeps a copy of the various parameters that
define the gradient. The copies are native arrays to avoid copying
Java arrays on every draw call. The gradient code path is implemented
until OpenGLRenderer::drawRect() (see TODO.) The actual gradient
implementation will be added in a latter change.

Change-Id: I9300d250ef5e2e9c2e097c3116ee71dfc9d752d8
2010-07-16 17:10:13 -07:00
Romain Guy
9a89b0e1b9 Merge "Improve clip support (add intersect, union and replace.)" 2010-07-16 14:13:48 -07:00
Romain Guy
079ba2c85b Improve clip support (add intersect, union and replace.)
This change also modifies the way the clip is stored. The clip is now
always stored in screen-space coordinates.

Change-Id: I96375784d82dfe975bc6477a159e6866e7052487
2010-07-16 14:12:24 -07:00
Chet Haase
9bc829cc15 Fixing view property invalidation issues
Change-Id: I51d2c03cabacfc1a7c05073977e7c22d32de7cb3
2010-07-16 14:08:05 -07:00
Jeff Brown
eb857f12d6 resolved conflicts for merge of f7adbe10 to master
Change-Id: I898a5e53b180adaee2337c0c0b9896c799d056e7
2010-07-16 10:06:33 -07:00
Jeff Brown
e33348ba54 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
2010-07-16 00:02:48 -07:00
Jeff Brown
b75fa30aaf resolved conflicts for merge of aca672ba to master
Change-Id: I7ae11fca0acdbf513a4870226d0d3e3cafbe9a08
2010-07-15 23:47:29 -07:00
Jeff Brown
c5ed5910c9 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
2010-07-15 18:32:33 -07:00
Romain Guy
c96cdc9844 Merge "Add support for BitmapShader." 2010-07-15 14:45:37 -07:00