Commit Graph

673 Commits

Author SHA1 Message Date
Steve Howard
dfc8cde5c8 am 1f442104: am e0c8582e: Merge "Improve orientation sensing when waking up while flat." into gingerbread
Merge commit '1f4421048206ca1745ddd6366588759c9c5c38f9'

* commit '1f4421048206ca1745ddd6366588759c9c5c38f9':
  Improve orientation sensing when waking up while flat.
2010-08-21 09:40:22 -07:00
Adam Powell
2b342f0a76 Allow ViewGroup to split MotionEvents to multiple targets during dispatch.
Use the layout xml attribute splitMotionEvents="true" or the ViewGroup
method setMotionEventSplittingEnabled(true) to enable motion event
splitting. Rules for splitting are as follows:

* Splitting is enabled per ViewGroup. When splitting is enabled any
  MotionEvent dispatched to that ViewGroup can potentially be split
  into several and dispatched to children independently.

* Each pointer is assigned a target child view when the ACTION_DOWN or
  ACTION_POINTER_DOWN event is received. That will be the pointer's
  target until it goes up, the target returns false from onTouchEvent,
  or the MotionEvents are intercepted.

* Multiple pointers may be assigned to the same target. All pointer
  data sent to a target are bundled into a single MotionEvent. Child
  views do not need to be aware that splitting has occurred.

Change-Id: I993f838e2f6b455da9812f4742a016dfcd1c4cc9
2010-08-20 13:39:28 -07:00
Steve Howard
e0c8582e8a Merge "Improve orientation sensing when waking up while flat." into gingerbread 2010-08-19 08:29:29 -07:00
Konstantin Lopyrev
917031361c am 28bd3a54: am f2af87b3: Merge "Making sure the draw time is measured." into gingerbread
Merge commit '28bd3a54ec192ed9259cf88873e387129103258e'

* commit '28bd3a54ec192ed9259cf88873e387129103258e':
  Making sure the draw time is measured.
2010-08-18 14:22:25 -07:00
Steve Howard
5eb49583e2 Improve orientation sensing when waking up while flat.
This change makes the window manager pass the currently displayed
orientation to the WindowOrientationListener each time to calls to get
the currently sensed orientation.  Now, when the
WindowOrientationListener doesn't know for sure what the orientation
of the device should be (for example, if the sensed orientation is
flat on a table), then it trusts the already-displayed orientation,
rather than trusting whatever sensors reading it most recently
received.

The main use case this addresses is:
* user uses device in portrait
* user turns off device, puts it in pocket
* while in pocket, screen gets turned on, activating orientaiton
  sensor, which senses landscape orientation
* screen timed out
* user takes device out, places it on a table (or looks down at it,
  holding it flat), and unlocks it

Previously, when the device was unlocked, the
WindowOrientationListener would return landscape orientation based on
its previous sensor readings.  Now, it will override those previous
readings because it knows they never actually took effect and the
device is presently flat.

This change also slightly modifies the way we handle flat orientation,
now completely ignoring data when the tilt distrust is nonzero (even
if the current sensor reading shows non-tilted).

Change-Id: Ia4950a41827f8c53a80487d0c2e83b556df781b9
2010-08-18 14:22:19 -07:00
Romain Guy
756879836b Merge "Layers were using an extra Snapshot causing extra clipping." 2010-08-18 11:51:25 -07:00
Romain Guy
2542d19974 Layers were using an extra Snapshot causing extra clipping.
Bug #2919310

Change-Id: I72ccd44bba7a3f3db72f581aa96198b6226e4478
2010-08-18 11:47:12 -07:00
Konstantin Lopyrev
bef337f516 Making sure the draw time is measured.
Change-Id: I6bf8094aee03793f125008386c4fea730e95d07a
2010-08-18 11:31:27 -07:00
satok
7eb84256e5 Enhancement of method.xml for Fast IME switching
- (Public API) Add public attrs: imeSubtypeExtraValue, imeSubtypeLanguage, imeSubtypeMode
-- (Public API) Add InputMethodSubtype class
-- (Public API) Add getSubtypes to InputMethodInfo
- Add parser for the enhanced method.xml

Change-Id: Ie7965fd29fd9615ef9c9418075c9f5f1c3365eb6
2010-08-18 19:19:00 +09:00
Dianne Hackborn
291905e34a Maybe fix #2925641: calling onCreateOptionsMenu before attached activity
Also add some APIs to PreferenceActivity.

Change-Id: I85894a3eb9cd3e5adb78b82e85454c0d74773178
2010-08-17 18:53:19 -07:00
Romain Guy
8fb954263d Fix save()/restore() issues in the OpenGL renderer.
The save stack now behaves exactly like in Skia.

Change-Id: If7e642f41f2c8f693f6e8c26cba81507d466562e
2010-08-17 18:40:21 -07:00
Adam Powell
4d9861e7ec Bug 2923440 - ActionMode buttons show if room by default - different approach.
This enforces the new policy if menu items are created
programmatically instead of inflated from menu xml.

This reverts commit fbb72fdbe5.

Change-Id: I102e93b80a3248634e98e0d7dc3321bf1d8b263b
2010-08-17 11:43:16 -07:00
Adam Powell
fbb72fdbe5 Fix bug 2923440 - ActionMode buttons show as action by default
The MenuInflater returned by ActionModes will set the default
showAsAction value to "ifRoom" if not otherwise specified.

Change-Id: I86045dc4e877a97a3464a1a5f44d8d1e2120b086
2010-08-16 18:02:58 -07:00
Mathias Agopian
0ab1d7f552 am 98a94989: am 833533c9: Improve Display javadoc slightly
Merge commit '98a94989dd5fbf3da61329d0232a84a0e2dfcb74'

* commit '98a94989dd5fbf3da61329d0232a84a0e2dfcb74':
  Improve Display javadoc slightly
2010-08-16 16:58:14 -07:00
Mathias Agopian
833533c929 Improve Display javadoc slightly
Change-Id: Iaa7d599e11d42d4aaf50e87b141f9b8d04ba445e
2010-08-16 13:30:20 -07:00
Romain Guy
1e45aae5de Add drop shadows.
Change-Id: Ic6a72409d4785968d1fbdff229f17ee5c00b240b
2010-08-13 19:41:14 -07:00
Romain Guy
831cffa572 Merge "Bunch of fixes." 2010-08-11 19:38:40 -07:00
Romain Guy
959c91f7f7 Bunch of fixes.
Fixes memory leak, fixes multiple context support, fix 3d transforms.

Change-Id: I7462cfbc57857dbd4de4e76b9d4cba58a1bce77b
2010-08-11 19:35:53 -07:00
Chet Haase
949dbf7629 Fix the build from two breaking changes (update to current.xml and ViewRoot import)
Change-Id: I987b12f7c5fdd4137faa55405fce99bd6f73fc71
2010-08-11 18:41:06 -07:00
Jeff Brown
08965fc730 resolved conflicts for merge of 4e14159a to master
Change-Id: I42dc1efc2218af326a826aeb16daded71722b363
2010-08-11 18:00:34 -07:00
Adam Powell
943fbb4f40 Merge "ActionBar overlay mode, height fetching, show/hide" 2010-08-11 17:26:10 -07:00
Jeff Brown
b219a83ff6 am f66f8a58: am 95af0c14: Merge "Add support for the PointerLocation overlay." into gingerbread
Merge commit 'f66f8a58cc4412bd258e1d5b11cac17a617bdc58'

* commit 'f66f8a58cc4412bd258e1d5b11cac17a617bdc58':
  Add support for the PointerLocation overlay.
2010-08-11 16:22:47 -07:00
Jeff Brown
92ff1dd835 Fix ViewRoot bug attempting to finish synthetic KeyEvents.
Bug: 2834068
Change-Id: I34ee0c4479cee36b25a2c3e1cdf5d761b663ac1e
2010-08-11 16:18:13 -07:00
Adam Powell
6b336f835d ActionBar overlay mode, height fetching, show/hide
Change-Id: Ie931ed26ec885d891d6733132b517a53d95f8491
2010-08-11 16:17:57 -07:00
Jeff Brown
95af0c14a6 Merge "Add support for the PointerLocation overlay." into gingerbread 2010-08-11 16:15:48 -07:00
Jeff Brown
a41ca77fab 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
2010-08-11 14:46:32 -07:00
Konstantin Lopyrev
12fb5a3573 am 8279c754: am 91a7f5fe: Making sure that the prefix is handled properly.
Merge commit '8279c754d176d5c2aa23f6f7ad16fcea03278788'

* commit '8279c754d176d5c2aa23f6f7ad16fcea03278788':
  Making sure that the prefix is handled properly.
2010-08-10 21:53:49 -07:00
Adam Powell
f98d3e3047 am e8fa85d7: am 224ab9a5: Merge "Fix public bug http://code.google.com/p/android/issues/detail?id=10067" into gingerbread
Merge commit 'e8fa85d7a1a75d6894a75b1c25abf99bbff50085'

* commit 'e8fa85d7a1a75d6894a75b1c25abf99bbff50085':
  Fix public bug http://code.google.com/p/android/issues/detail?id=10067
2010-08-10 21:53:40 -07:00
Konstantin Lopyrev
ecb1d5ded9 resolved conflicts for merge of f00ee0f7 to master
Change-Id: I13b968bde37fad8fffdaa9bb94a0f1da9b2e6e0c
2010-08-10 21:47:34 -07:00
Konstantin Lopyrev
91a7f5fef8 Making sure that the prefix is handled properly.
Change-Id: Ic50327b1ed4d6b54753b5b3887508a53cd7a3497
2010-08-10 18:54:54 -07:00
Adam Powell
224ab9a5c6 Merge "Fix public bug http://code.google.com/p/android/issues/detail?id=10067" into gingerbread 2010-08-10 17:52:15 -07:00
Adam Powell
9bccdb7d5c Fix public bug http://code.google.com/p/android/issues/detail?id=10067
Change-Id: I7b7a9a32e82fc7541beabe286b20b01f39406cc8
2010-08-10 17:50:11 -07:00
Konstantin Lopyrev
f39d5987b9 Merge "Categorizing exported view properties." into gingerbread 2010-08-10 17:48:27 -07:00
Konstantin Lopyrev
bea95162ca Categorizing exported view properties.
Change-Id: I79c42019836973d80662c21d195d088ae01537a0
2010-08-10 17:45:03 -07:00
Jeff Brown
ea48ff4ba4 am 95105f3c: am c3fc2d03: Fix safe mode and KeyEvent.getMaxKeyCode().
Merge commit '95105f3c25110f28b236cfa71e9ad74533eef854'

* commit '95105f3c25110f28b236cfa71e9ad74533eef854':
  Fix safe mode and KeyEvent.getMaxKeyCode().
2010-08-10 16:39:10 -07:00
Jeff Brown
fb8e05b154 am d3cf0544: am d98d0fc6: Merge "Optimize VelocityTracker to run in linear time." into gingerbread
Merge commit 'd3cf0544cc7eec8ace3dc3b7fc17b7dac69e0aab'

* commit 'd3cf0544cc7eec8ace3dc3b7fc17b7dac69e0aab':
  Optimize VelocityTracker to run in linear time.
2010-08-10 16:38:58 -07:00
Jeff Brown
c3fc2d03d5 Fix safe mode and KeyEvent.getMaxKeyCode().
Bug: 2901731
Change-Id: I78617c1b9dee3790fc590e5af4b5083368873184
2010-08-10 16:28:03 -07:00
Jeff Brown
d98d0fc6e9 Merge "Optimize VelocityTracker to run in linear time." into gingerbread 2010-08-10 16:26:56 -07:00
Romain Guy
a48a1a87ba Fast text selection drawing.
Change-Id: I93fb1312b47bc05345defa9b6cfe47c0658bb329
2010-08-10 14:59:15 -07:00
Romain Guy
61c8c9c5b2 Fix tons of bugs and add new text rendering support.
Change-Id: I326c66b10784006f6df2f12d38e120cef94cd0d7
2010-08-10 12:22:01 -07:00
Chet Haase
fd2b002bcf Add 3D rotation to View
Change-Id: I4aa2542eb821e82d44e13d69b0938de13ffd4f0d
2010-08-10 10:36:21 -07:00
Konstantin Lopyrev
6f4169cb28 am 75493be9: am 63cca691: Merge "Make sure profiling is done only for views that are actually measured, laid out and drawn." into gingerbread
Merge commit '75493be9c0b4dd24fc5cddce6ee993ce5f0b2887'

* commit '75493be9c0b4dd24fc5cddce6ee993ce5f0b2887':
  Make sure profiling is done only for views that are actually measured, laid out and drawn.
2010-08-09 20:00:44 -07:00
Jeff Brown
88cf2fca38 Optimize VelocityTracker to run in linear time.
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
2010-08-09 18:50:35 -07:00
Konstantin Lopyrev
63cca69157 Merge "Make sure profiling is done only for views that are actually measured, laid out and drawn." into gingerbread 2010-08-09 17:02:39 -07:00
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
Konstantin Lopyrev
c6dc45700b Make sure profiling is done only for views that are actually measured, laid out and drawn.
Change-Id: I88c66e882be2781d079c51b6580a19c4e359c5b1
2010-08-06 15:41:33 -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