Commit Graph

2908 Commits

Author SHA1 Message Date
Romain Guy
dddcd22b7e Don't crash on Surface.unlockAndPost() but log & try again
Bug #6482593

Change-Id: Ib477b58e2b7a6cb19a87d05f2aa0448e04d82f7c
2012-05-18 15:33:57 -07:00
Romain Guy
c8c4ced838 Merge "Call invalidate() immediately when a frame is available" into jb-dev 2012-05-17 19:04:51 -07:00
Romain Guy
52c145ff5c Call invalidate() immediately when a frame is available
This change ensures that applications producing surface texture updates
at a steady rate will display the updates on screen at the same rate,
v-synced.

Change-Id: I663685b34d12809fbf8945c44851e30a2052ce74
2012-05-17 18:06:23 -07:00
alanv
9768832da8 Fix paragraph iterator.
Bug: 6509239
Change-Id: I628d7fd07cda24c66a0fa3f456e0141786e768a5
2012-05-17 13:54:30 -07:00
Craig Mautner
d51a68b3d2 Merge "Eliminate deferred surface destruction." into jb-dev 2012-05-17 13:11:50 -07:00
Craig Mautner
bf08af3323 Eliminate deferred surface destruction.
Removing the code that delays a surface destruction when
WindowManager.FLAG_KEEP_SURFACE_WHILE_ANIMATING is set. The lock
screen that continued to animate after destroySurfaceLocked is no
longer used and this code was causing problems.

Also mDrawState was being set to NO_SURFACE in destroySurfaceLocked
even if the surface ended up not being destroyed. Later when it was
reused the false value of mDrawState was messing things up.

The screen lock bug referenced below no longer levaes the user stuck
with a black lockscreen. However it occasionally powers back up in the
launcher screen rather than the lock screen.

Fixes bug 6485955.

Change-Id: I684104c7e7c39c161a5118aa890889fbae92e635
2012-05-16 20:07:22 -07:00
Dianne Hackborn
20c0cdbbf7 Merge "Have the stable layout take into account the window's fullscreen flag." into jb-dev 2012-05-16 19:41:09 -07:00
Svetoslav Ganov
e54c5f1365 Merge "Exposing some accessiblity actions only for enabled views." into jb-dev 2012-05-16 18:43:31 -07:00
Svetoslav Ganov
fb1e80a247 Exposing some accessiblity actions only for enabled views.
1. Some accessibility actions should not be performed on disabled
   views. For example, scrolling should not be permitted while
   accessibility focus should be. Made a quick pass over the
   actions we expose now.

Change-Id: I36626dfbc0d2f480309a910f58f1de64e9e05675
2012-05-16 17:51:52 -07:00
Adam Powell
648337b3a8 Merge "Fix a bug where late-invalidating views with animations would be held for too long by ViewRootImpl" into jb-dev 2012-05-16 17:46:10 -07:00
Adam Powell
3e3c4ee047 Fix a bug where late-invalidating views with animations would be held
for too long by ViewRootImpl

Change-Id: I1e32bf2683b50f8834f215a753f881b5d4b8dbc9
2012-05-16 17:34:21 -07:00
Jeff Brown
c8d2668bc4 Add systrace method tags for measure and layout.
Change-Id: I739f6384b390d1b34b09b622ca0f752de1dd7304
2012-05-16 17:27:24 -07:00
Dianne Hackborn
5b5cc4d536 Have the stable layout take into account the window's fullscreen flag.
When using stable layouts, you are typically expected to hide and
show the status bar through the system UI fullscreen flag.  This hides
both the status bar and the action bar.  The stable layout assumed
that when not hiding the status bar through the system UI flags, that
the status bar would be visible.

This change makes things a little smarter, also looking at the
window's fullscreen flag (which only hides the status bar).  If this
flag is set on the window, then the stable layout now assumes that
the status bar will never be shown.  This allows us to position the
action bar correctly in the situation where the application has set
the window to fullscreen and requested a stable layout, instead of
always leaving room for the status bar above it.

Change-Id: I757072ae99cd3741753af7210dbf51afe94d3db5
2012-05-16 17:24:11 -07:00
Jeff Brown
0d28cdf1c8 Merge "Fix a possible starvation issue related to vsync." into jb-dev 2012-05-16 16:25:05 -07:00
Svetoslav Ganov
c5fb5805c9 Merge "Accessiblity focus not following input focus and text nav broken." into jb-dev 2012-05-16 13:26:54 -07:00
Jeff Brown
b080660dfd Fix a possible starvation issue related to vsync.
This makes a noticeable improvement in cases where applications
post messages that need to be processed between animation frames.

Bug: 6418353
Change-Id: If225742e37aeaf3f0ca9710f9bf43dbb03bcde12
2012-05-16 12:50:41 -07:00
Svetoslav Ganov
64899e5c8f Accessiblity focus not following input focus and text nav broken.
1. View is checking if the accessibility focus is its
   descendant it clears the accessibility focus state
   in ViewRootImpl. The check in View was missing the
   case that the descendant may be the view itself. In
   such a case we want the normal clearing code to run.

2. The check whether a view has iterable text for
   accessibility was inverted and text nav was not
   working.

Change-Id: I1a13b6809fb7f205fff76ca09cd449179d06e530
2012-05-15 21:14:10 -07:00
Romain Guy
d44a16864d Merge "Don't draw onto a hw surface using the software renderer Bug #6485955" into jb-dev 2012-05-15 19:19:41 -07:00
Romain Guy
413baf8a03 Don't draw onto a hw surface using the software renderer
Bug #6485955

If an invalidate gets scheduled right before the EGL surface is destroyed,
the next draw pass is done in software. This causes the software renderer
to connect to the surface forever which prevents the hardware renderer
from coming back when the screen is turned back on.

The fix here is to ignore the draw request when hw acceleration is requested
but not yet available. Proper software fallback will still happen when an
error is encountered with hardware rendering (in which case hw acceleration
will not be marked as requested anymore.)

Change-Id: I1edc4a51c8dd38240aa2345092a18a081a756fc1
2012-05-15 19:15:47 -07:00
Svetoslav Ganov
4528b4e882 Prefetching of accessibility node infos getting incorrect views.
1. The prefetcher of accessibility nodes infos was not folloing
   the childForAccessibility relationship when finding the views
   whose node infos to prefetch.

2. NumberPicker was not reporting the correct parent.

bug:6471710

Change-Id: Ia7ad5dd031fb4b3816dfe630d5212201cfafa236
2012-05-15 18:32:23 -07:00
Chris Wren
78cb7cf7d1 Allow animations to run past cancelled draws, if the view is visible.
Bug: 6475482
Change-Id: Iecb3a04744282135efa0049f1b70a46dc4a6bb23
2012-05-15 10:57:59 -07:00
Svetoslav Ganov
0e29ac9e4e Merge "Accessibility focus traversal in virtual nodes." into jb-dev 2012-05-15 10:48:44 -07:00
Svetoslav Ganov
791fd31a68 Accessibility focus traversal in virtual nodes.
1. Finished the implementation of support for maintaining
   accessibility focus in view with virtual descendants.

2. Finished the NumberPicker implementation of virtual
   subtree such that all requred attributes are reported
   and ensuring that it support accessibility focus in
   its virtual descentants.

3. Fixed a bug where if a predecessor of the view that is
   accessiiblity focused is removed the accessibliity focus
   host in ViewRootImpl is not cleared leading to a crash
   when trying to draw the accessibility focus highlight.:

bug:6472646
bug:6433864

Change-Id: I3645642b87b4a26025c0b2ba9dfaad92d11a48f1
2012-05-15 00:43:53 -07:00
Romain Guy
7b8523aaed Merge "Remove all Dalvik allocations from Cavnas.drawBitmap(int[], ...)" into jb-dev 2012-05-14 20:12:09 -07:00
Romain Guy
e651cc6239 Remove all Dalvik allocations from Cavnas.drawBitmap(int[], ...)
Change-Id: Ie28538a2104d21154fdc78a56525e7403f08287d
2012-05-14 19:44:40 -07:00
Svetoslav Ganov
8ce2d78aa8 Merge "Improving accessibility focus traversal." into jb-dev 2012-05-14 18:26:24 -07:00
Jeff Brown
00ff47484f Merge "More VelocityTracker refactoring." into jb-dev 2012-05-14 17:12:32 -07:00
Eric Laurent
dfae6db022 Merge "Implement new volume display policy." into jb-dev 2012-05-14 16:30:47 -07:00
Svetoslav Ganov
e5dfa47d84 Improving accessibility focus traversal.
1. Now the views considered during the accessibility focus search
   are the ones that would get accessibility focus when thovered
   over. This way the user will get the same items i.e. feedback
   if he touch explores the screen and uses focus traversal. This
   is imperative for a good user experience.

2. Updated which focusables are considered when searching for access
   focus in ViewGroup. Generally accessibility focus ignores focus
   before/after descendants.

3. Implemented focus search strategy in AbsListView that will traverse
   the items of the current list (and the stuff withing one item
   before moving to the next) before continuing the search if
   forward and backward accessibility focus direction.

4. View focus search stops at root namespace. This is not the right
   way to prevent some stuff that is not supposed to get a focus in
   a container for a specific state. Actually the addFocusables
   for that container has to be overriden. Further this approach
   leads to focus getting stuck. The accessibility focus ignores
   root names space since we want to traverse the entire screen.

5. Fixed an bug in AccessibilityInteractionController which was not
   starting to search from the root of a virtual node tree.

6. Fixed a couple of bugs in FocusFinder where it was possible to
   get index out of bounds exception if the focusables list is empty.

bug:5932640

Change-Id: Ic3bdd11767a7d40fbb21f35dcd79a4746af784d4
2012-05-14 16:21:29 -07:00
Svetoslav Ganov
844047acb7 Merge "Fix inconsitency in aAccessibilityNodeInfo cache." into jb-dev 2012-05-14 14:14:26 -07:00
Eric Laurent
8c78752f2b Implement new volume display policy.
Whenever a stream type is muted, the progress bar in volume panel
is at 0.
If a stream is muted by ringer mode and does not control ringer mode,
the progress bar is disabled.
Pressing VOL- when in vibrate or silent mode resets the last audible
volume of ringtone stream (music strem on tablets) to 0.

VolumePanel implementation:
 - Always prefer AudioManager APIs over AudioService APIs when available on both.
 - Do not use AudioManager.shouldVibrate() (deprecated).

Change-Id: I57fcb19ada4e8d729b6b41d668496562ebe340c3
2012-05-14 14:13:10 -07:00
Michael Jurka
143a02aa79 Merge "Prevent ViewPropertyAnimators from getting started twice" into jb-dev 2012-05-14 14:04:27 -07:00
Chet Haase
728e43948c Merge "Minor touch-up of Animation docs" into jb-dev 2012-05-14 12:58:08 -07:00
Mathias Agopian
7ed1d6613e Merge "fix SurfaceView visibility state changes" into jb-dev 2012-05-13 23:50:32 -07:00
Jeff Brown
85bd0d6283 More VelocityTracker refactoring.
Bug: 6413587
Change-Id: Ida1152e7a34d5fe5caab5e6b5e1bc79f6c7a25e6
2012-05-13 16:10:57 -07:00
Michael Jurka
500998d401 Prevent ViewPropertyAnimators from getting started twice 2012-05-13 15:35:02 -07:00
Dianne Hackborn
2a7a6ca00a Merge "Implement new window cropping." into jb-dev 2012-05-13 15:24:32 -07:00
Dianne Hackborn
85afd1b6f8 Implement new window cropping.
The window manager now performs the crop internally, evaluating
it every animation from, to be able to update it along with
the surface position.

Change-Id: I960a2161b9defb6fba4840fa35aee4e411c39b32
2012-05-13 13:31:06 -07:00
Mathias Agopian
cbeb33249d fix SurfaceView visibility state changes
SurfaceView didn't recompute the transparent region
when the INVISIBLE state (as opposed to GONE) was involved.

Bug: 6467123
Change-Id: I05930bd568a345331840c1ad8d9123ef4904c04f
2012-05-12 19:57:07 -07:00
Guang Zhu
0d607fbe54 accessibility bug fix in NumberPicker
* moved View#isVisibleToUser to protected with @hide
* added a new View#isVisibleToUser(Rect), so that a portion of
  the view can be tested for visibility
* NumberPicker will report its concrete class name
* code to append virtual children was at wrong place
* boundInScreen for increment and decrement buttons are reported
  wrong

Change-Id: Ic5d644b3e1efa15b1f0537907c8cdd4ce43a97c1
2012-05-12 19:09:34 -07:00
Jeff Brown
5877023221 Merge "Move power HAL interactions to PowerManagerService." into jb-dev 2012-05-11 19:32:56 -07:00
Jeff Brown
7304c34382 Move power HAL interactions to PowerManagerService.
This refactoring sets the stage for a follow-on change that
will make use additional functions of the power HAL.

Moved functionality from android.os.Power into PowerManagerService.
None of these functions make sense being called outside of the
system server.  Moving them to the PowerManagerService makes it
easier to ensure that the power HAL is initialized exactly once.

Similarly, moved ShutdownThread out of the policy package and into
the services package where it can tie into the PowerManagerService
as needed.

Bug: 6435382
Change-Id: I958241bb124fb4410d96f5d5eb00ed68d60b29e5
2012-05-11 18:42:42 -07:00
Svetoslav Ganov
c406be9036 Fix inconsitency in aAccessibilityNodeInfo cache.
1. Fixed errors in the accessibility node cache.

  A. The cache was not catching the case when the current window changes as a
     result the user touch exploring it. As a result the cache had nodes from
     more that one window but the node ids are not unique thus causing a mess.

  B. The node info tree was prefetched regardless if a prefetched node is root
     name space (i.e. view ids - not accessibility ids - are namespaced) while
     the prefetched nodes were taking this into account. As a result there can
     get disconnected subtrees in the cache.

  C. When an event for a property change such as focus was received the cache
     we were removing the source node. As a result there may be disconnected nodes.

  D. When a node was added to the cache and an older version exists there was
     no check if it will point to the same children and parent. As a result if
     the state of the node has fewer children the subtrees rooted at the no
     longer present children will stay disconnected in the cache.

  E. When a node got accessibility or input focus the old one in the cache was
     not removed. As a result you may have a state with more than one access
     or input focus.

2. Added integrity check enabled only on user builds when a specific flag is set
   for the cache which checks whether:

  A. All nodes are from the same window.

  B. All nodes are connected.

  C. There are no duplicates.

  D. There is only one input focus.

  E. There is only one accessibility focus.

3. The reported accessibility node info tree was stopping at the root namespace
   boundary which is not correct. The reported tree has to reflect everything
   on the screen that the user can see such a workspace with widgets. The root
   namespace is added to avoid clash of view id but the accessibility ids are
   unique no matter if the view is inflated from a remote view.

4. Added calls to notify the accessibility layer when a preoprty that is interesting
   for accessibiliy has changed.

bug:6471710

Change-Id: I069470d91f209ba16313fa6539787a55efa3512e
2012-05-11 17:42:07 -07:00
Jamie Gennis
c9e27d4ba1 Merge "Surface: replace active rect with window crop" into jb-dev 2012-05-11 17:17:31 -07:00
Adam Powell
7fc4fbccd6 Merge "Automatic persistent text selection for ListViews" into jb-dev 2012-05-11 16:34:15 -07:00
Chet Haase
4242893e32 Minor touch-up of Animation docs
Change-Id: Ifd615d352b9924d562f4238c8ed36a8f4e6a91fa
2012-05-11 15:39:07 -07:00
Adam Powell
057a585fba Automatic persistent text selection for ListViews
Use View transient state tracking to allow selection to persist across
ListView-style item view recycling.

Fix some bugs with transient state tracking.

Bug 6110122

Change-Id: Ic084b8fc2289bff718b19478a37ce64459b3ed4c
2012-05-11 14:26:17 -07:00
Jeff Brown
b12b6b5116 Merge "Minor refactoring before starting on velocity tracker changes." into jb-dev 2012-05-11 14:03:38 -07:00
Jeff Brown
8a90e6e317 Minor refactoring before starting on velocity tracker changes.
Bug: 6413587
Change-Id: I5eba2bb57193bff78cb3740de5f87aca0b31d154
2012-05-11 12:32:56 -07:00
Chet Haase
1a3ab175b0 Fix quickReject logic for transformed views
When a parent draws its child views, each child's bounds is checked
against the current dirty region. If the view falls outside of that
region is is rejected and doesn't enter into the parent's DisplayList.

This works in general, for both transformed and untransformed views
(because we skip this check if the view is transformed). But it breaks down
when the transform properties of the view change later, since DisplayList
properties simply push these values down to the view's DisplayList without
invalidating the parent. If a view is rejected when untransformed, then there
is nothing to cause it to be considered again until something causes an
invalidate of the parent.

The fix is to note when a view is rejected and record that information.
Later, when one of the transform-related properties change, we invalidate the parent
to force the check to happen again, which will cause the view to get drawn
if it's visible.

Issue #6477730 quickRejected views must recreate their DisplayLists on transform changes

Change-Id: I70caf198005cd7e424a37bccc6ae050e09880a6c
2012-05-11 11:03:12 -07:00