Commit Graph

4668 Commits

Author SHA1 Message Date
Chet Haase
7a46dde1ae Changed name of recent hasLayout() method to isLaidOut()
This new method on view reflects whether the view has been laid out
at least once since it was attached. hasLayout() seems too vague for that
meaning; every View that has a parent has a layout (since we use container,
parent, and layout interchangeably). The new version of the method
is closer to the actual meaning.

Change-Id: I519745739b6a6317faeb077aa61f994025cf81f3
2013-07-17 10:22:53 -07:00
Romain Guy
af093fd414 Merge "Skip unnecessary measurements when possible" 2013-07-16 23:37:29 +00:00
Romain Guy
93c567cddc Skip unnecessary measurements when possible
This change introduces a new measure cache to View, to remember
the measured dimensions for previous pairs of measure specs. The
measure cache is cleared whenever a View requests layout.

Unfortunately some Views rely on measure being always called when
layout is invoked. To work around this problem, we need to remember
when we hit the measure cache to force a call to measure just prior
to calling onLayout(). This does not completely removes all measure
calls but enough to optimize a number of layouts.

Change-Id: Ie085fbcf186e9d7505e1127e0786a12968ebc344
2013-07-16 16:25:09 -07:00
Romain Guy
775ffa78f3 Merge "Fix crashes in setMatrix() and concat()" 2013-07-16 22:27:04 +00:00
Chet Haase
4a83804ddf Merge "Fix issues with delayed transitions" 2013-07-16 22:20:24 +00:00
Chet Haase
c43524f386 Fix issues with delayed transitions
Previously, there were two distinct problems with how delayed
transitions were being run:
- there would be a delay between the transition being put into
a preDrawListener (to be kicked off when that listener fired) and
being removed from the pending list. This allowed another delayed
transition to be run in parallel, which would cause conflicting/
clobbering issues with transition values on the same objects.
- there would be an extra frame delay in some cases due to how/when the
delayed transition would be started. Specfically, we would postOnAnimation()
to call a method that would then add the onPreDraw listener. This two-step
forwarding caused issues noted above.

The fix is to simply add the transition to the preDrawListener immediately, removing
the two-step problem, and also ensuring that the transition is only removed
from the pending list when it is actually started, which prevents other transitions
from starting in the meantime.

Also, added more debug logging to help chase future issues with transitions.

Change-Id: Ie2ff8e73d29f342512842e9641bd8d605e74544c
2013-07-16 14:55:26 -07:00
Romain Guy
4e7b772b73 Fix crashes in setMatrix() and concat()
setMatrix() was crashing in native code, only with hw acceleration on.
concat() would throw a NullPointerException. It now ignores null matrices.

Change-Id: Iebd8b410a957d2ba501570c6fbb3f680ff4a1a23
2013-07-16 14:52:55 -07:00
John Spurlock
fe4fb365ba Merge "Un@hide View.PRESSED_STATE_SET." 2013-07-16 13:37:18 +00:00
michaelwr
20555cb645 Merge "Add a keycode to switch audio tracks (1/2)" 2013-07-16 01:38:46 +00:00
Svetoslav
f9d73e6016 Merge "Fixing bugs discovered by the CTS tests." 2013-07-16 00:24:10 +00:00
Svetoslav
8d820ecffd Fixing bugs discovered by the CTS tests.
1. Delayed accessibility events sent when a view subtree changes may be
   be delivered after accessibility is disabled leading to a crash. It is
   possible that accessibility was disabled while we were waiting for
   the timeout before sending the event. Added a check before dispatching.

2. When refreshing a cached node the accessibility node info cache was
   not using the correct bypass cache argument value and as result was
   not getting the latest node but its cached value. We really want to
   get the latest state to update the cache.

3. The debugging cache integrity verification logic was incorrectly
   removing nodes from the cache while doing its work.

4. Removed the comments for some debug logging.

bug:9857067

Change-Id: I20ee1a6ffa65ad35457b51d3f2dc0bc5d8d784e6
2013-07-15 17:22:04 -07:00
John Spurlock
0a55c94730 Un@hide View.PRESSED_STATE_SET.
Looks like an oversight.  The other state sets are public, and we
reference this one in the public docs.

Change-Id: I1c2d8bec3cb277ebfb55ccaacefab0cb38703177
2013-07-15 12:18:04 -04:00
John Spurlock
6098c5d355 Docfixes in IBinder, Context, View, and Intent.
Fix links in @throws clauses, typos, redundant "returns"
and use @code for true + false in returns.

Change-Id: Ic3c4c75d6061732d997a386dc3232475c992c188
2013-07-15 12:08:21 -04:00
keunyoung
e3d2cc8fcc fix build
Change-Id: Ife4a1e33df2e4a71edba7b29844a06138103440d
2013-07-12 16:55:44 -07:00
keunyoung
27116e35e8 Merge "add TYPE_PRIVATE_PRESENTATION window type" 2013-07-12 23:03:21 +00:00
Adam Powell
da05cc2fac Merge "Tweak error fallback behavior for view direction resolution" 2013-07-12 21:56:44 +00:00
keunyoung
a446bf0e8c add TYPE_PRIVATE_PRESENTATION window type
- This window type can be used for Presentation created on top of virtual
  private display.
- There can be PRIVATE_PRESENTATION specific policy / behavior, but for now,
  there is nothing special.

Change-Id: I9fde0f0376e57fcc60000d3a3f8657a21ef58993
2013-07-12 14:41:10 -07:00
Chet Haase
c81a849388 Fix minor transition bugs and add capabilities
Some view changes require more flexible transitions than the
defaults provided by Crossfade and TextChange - this change supplies some
of that flexibility.

Also, starting a new transition on a hierarchy undergoing a transition
caused the first to get canceled, then the start values to be retrieved.
The new transition should actually get the start values from the intermediate
state of the views, so we now cancel the previous transition only after the
start values have been captured.

Issue #9756349 Transitions: Crossfade does not handle interruption/reverse correctly
Issue #9295863 Transitions: Add behavior API/flags to various transitions
Issue #9275859 Transitions: Improve mechanism for transition interruption

Change-Id: I5a8c5a12466ddcab9e84e4880930563fa1216f3b
2013-07-12 13:40:38 -07:00
Adam Powell
258f8de22c Tweak error fallback behavior for view direction resolution
If the required ViewParent methods aren't present for resolving text
direction or alignment, mark them resolved with default results and
skip further resolution steps.

Change-Id: I0ea6b0ce968cc24ffed77a2d1e66dfafbec49f9c
2013-07-12 11:33:44 -07:00
Jaekyun Seok
bfdad8ecad Add a keycode to switch audio tracks (1/2)
A key to switch audio tracks is general on media devices like blu-ray.

Bug: 9728155
Change-Id: Ib61822b8aa9c143a8febc3cff4707fa775119448
2013-07-12 17:23:29 +09:00
Adam Powell
504a10f2f5 Un-hide all ViewParent methods
Make it possible for code outside the framework to implement the
ViewParent interface.

Change-Id: Ic1b4eb15a4b3da1d16c92b59e039d89861d893e4
2013-07-11 15:25:59 -07:00
Chet Haase
dc57d9dda5 Fix minor transition bugs
TransitionGroup.setDuration() was not propagating the new duration to
future child transitions correctly.

Also, Fade should restore a fully-opaque value when a transition ends, to prevent
the problem of mid-stream canceled transitions causing vie3ws to get stuck with partially
faded-in alpha values.

Issue #9755995 Transitions: TransitionGroup.setDuration() not handled correctly
Issue #9756655 Transitions: handle fading cancelation better

Change-Id: Id44569c6f4152a26ee382d04c30a2f035a1ebcf3
2013-07-10 12:14:54 -07:00
Romain Guy
b2ed04a689 Unregister gralloc buffer immediately
Bug #9406765

Waiting for a GC to finalize the GraphicBuffer could cause ordering
issues

Change-Id: I7035a9eef52a6c3b44ab28f40a7b1fbdc83d2e20
2013-07-09 18:56:57 -07:00
Chris Craik
5bee57567b Merge "Use global references for Bitmap AndroidPixelRefs" 2013-07-08 19:20:18 +00:00
Chris Craik
0c20c3898a Use global references for Bitmap AndroidPixelRefs
bug:9621717

Because we're no longer holding onto Bitmaps Java side during
DisplayList lifetime, use global refs to keep the backing byte arrays
around.

Adds back bitmap buffer passing + native ref management removed by
3b748a44c6

Adds back globalRef-ing removed by
f890fab5a6

Change-Id: Ia59ba42f05bea6165aec2b800619221a8083d580
2013-07-08 11:08:02 -07:00
Craig Mautner
4f09d517c5 Remove debug logging.
Bug has been fixed.

Change-Id: Ifda11ac6e83012498855e0c7254c99491b128f04
2013-07-01 13:47:49 -07:00
Romain Guy
a6471e8834 Merge "Make sure textviews draw in layers" 2013-06-29 02:22:50 +00:00
Romain Guy
21f4230274 Make sure textviews draw in layers
Change-Id: I993a430880ab66739aed1fa7ae625290b2349835
2013-06-28 19:19:30 -07:00
Craig Mautner
d9f254094e Merge "Do not reuse DisplayAdjustment in Display." 2013-06-28 20:00:56 +00:00
Craig Mautner
1abaa53dcc Do not reuse DisplayAdjustment in Display.
Because the DisplayAdjustment in Display can be modified it should not
use the reference of the DisplayAdjustment that is passed in to
construct the Display. Copy the members of the DisplayAdjustment
instead.

Fixes bug 9622994

Change-Id: I8201b02eba3ef35af3e01f10402cd5dafec1fb23
2013-06-28 12:03:32 -07:00
Craig Mautner
1e09cfaa68 Merge "More debug for 9404689." 2013-06-28 18:01:33 +00:00
Craig Mautner
f1f5054f7a More debug for 9404689.
Changing focus to PhoneWindow.

Change-Id: I75c2ce6b1a20729daf8d2b7f83b2a871e1a7e642
2013-06-28 10:43:07 -07:00
Romain Guy
db4ae2b10e am dbfb2ab4: am 93d46952: am 67603c6e: Recreate TextureView\'s display list on attach Bug #9425270
* commit 'dbfb2ab4a760f0da910758467a7b9fccf09e97f5':
  Recreate TextureView's display list on attach Bug #9425270
2013-06-27 14:57:40 -07:00
Romain Guy
dbfb2ab4a7 am 93d46952: am 67603c6e: Recreate TextureView\'s display list on attach Bug #9425270
* commit '93d46952db60090ae22bc8197659a06ae23cb58b':
  Recreate TextureView's display list on attach Bug #9425270
2013-06-27 14:52:33 -07:00
Craig Mautner
8cbafbe6d2 Merge "Add debug for specific bug." 2013-06-27 19:29:05 +00:00
Craig Mautner
e7c58b6d7d Add debug for specific bug.
To be removed once the bug is fixed.

Change-Id: Ie273d4503bb0b534af0e9efe8f45c573766e9a74
2013-06-27 11:52:04 -07:00
Romain Guy
67603c6e1b Recreate TextureView's display list on attach
Bug #9425270

When a TextureView is detached from its window and immediately
re-attached, the display list is not destroyed but reused as is.
TextureView will however destroy the layer and surface texture
reference by the display list.

The solution is to force TextureView to invalidate its display
list on re-attach if it previously had a surface/layer pair.

Change-Id: I475096ffa7e5709155c4c943bf1bfaaaedbd4a1d
2013-06-27 10:58:10 -07:00
Romain Guy
e3b0a0117a Refcount 9-patches and properly handle GC events
This change adds refcounting of Res_png_9patch instances, the native
data structure used to represent 9-patches. The Dalvik NinePatch class
now holds a native pointer instead of a Dalvik byte[]. This pointer
is used whenever we need to draw the 9-patch (software or hardware.)

Since we are now tracking garbage collection of NinePatch objects
libhwui's PatchCache must keep a list of free blocks in the VBO
used to store the meshes.

This change also removes unnecessary instances tracking from
GLES20DisplayList. Bitmaps and 9-patches are refcounted at the
native level and do not need to be tracked by the Dalvik layer.

Change-Id: Ib8682d573a538aaf1945f8ec5a9bd5da5d16f74b
2013-06-26 17:15:08 -07:00
Alan Viverette
57b867f3f5 Merge "Minor ListView clean up. Exposes View.pointInView() as hidden API." 2013-06-26 22:12:28 +00:00
Alan Viverette
3d15a2b8f4 Minor ListView clean up. Exposes View.pointInView() as hidden API.
Change-Id: Ia628f8438fac5af2471efd8558c8876fae3dafb0
2013-06-25 17:27:37 -07:00
Romain Guy
e981c516e7 Merge "Make sure we have a valid EGL context before drawing Bug #9404946" 2013-06-25 02:23:08 +00:00
Romain Guy
cc6b7caff0 Make sure we have a valid EGL context before drawing
Bug #9404946

Run another EGL context check after invoking user code to ensure
we have a valid context/surface pair before drawing the display list.

Change-Id: Iefb0ced7900ce0c54eb81b62d24ec00700bdce47
2013-06-24 19:19:21 -07:00
Dianne Hackborn
8c84109b9f Use FastPrintWriter... everywhere.
One problem this turned up is, because FastPrintWriter does
its own buffering, a lot of code that used to use PrintWriter
would fail -- if it pointed to a StringWriter, there was no
buffering, so it could just immediately get the result.  Now
you need to first flush the FastPrintWriter.

Also added some new constructors to specify the size of buffer
that FastPrintWriter should use.

Change-Id: If48cd28d7be0b6b3278bbb69a8357e6ce88cf54a
2013-06-24 18:16:48 -07:00
Craig Mautner
07f36c738e Merge "Add activity token to display system." 2013-06-24 18:31:54 +00:00
Chet Haase
edaf0794bb Merge "Fix ViewGroupOverlay's handling of invalidating viewgroups" 2013-06-24 16:37:55 +00:00
Craig Mautner
48d0d18867 Add activity token to display system.
First step in adding activity specific information to displays.
Replace CompatibilityInfoHolder with DisplayAdjustmentsHolder that
holds an activity token in addition to the CompatibilityInfo.

Change-Id: Ie113cd8dd9c62e0b5311204e039a4829096bea68
2013-06-22 15:30:13 -07:00
Chet Haase
e4a2d7c48e Fix ViewGroupOverlay's handling of invalidating viewgroups
Invalidating a view property (alpha, rotation, etc.) causes an
invalidation process that does not work correctly when the view is
in a ViewOverlay. Specifically, if the view is not directly in the
overlay, but is instead inside a hierarchy which is within the overlay,
then the invalidation process stops at the ViewOverlay itself, because
the ViewOverlay has no "parent" view.

The fix is to override the invalidateChildInParentFast() method, just
like we override invalidateChildInParent(), to forward the invalidation
to the host view.

Issue #9389230 Animations not running for nested views under ViewGroupOverlay

Change-Id: I03fcef10ed1c8a91cb26d5d9d6945634b0b695b5
2013-06-21 17:49:36 -07:00
Romain Guy
35c70f94ef Merge "When destroying a surface, only unmake current if necessary Bug #9404946" 2013-06-21 23:44:32 +00:00
Romain Guy
c8ba0b4616 When destroying a surface, only unmake current if necessary
Bug #9404946

The Calendar app destroys one of its popup windows during a draw
traversal. Without this patch, we end up with no current context
nor surface after we're done gathering display lists. This means
that all of our EGL/GL calls will either fail or have undefined
behaviors. This could explain the PBO crash we are seeing with
the monkeys. Without a proper GL context, the driver returns NULL
when we map the PBO in CPU memory.

Change-Id: I210cf724be73da909a7621f807298a9f4a58e61d
2013-06-21 16:40:30 -07:00
Chet Haase
2ea7f8b9c5 Refactoring/simplifying Transition code/API
Transitions used to be three phase:
- captureValues(): get all relevant property values in the
affected view targets
- setup(): set appropriate start values for affected views
prior to any transitions being played
- play(): create/play Animators for affected views

Now the second and third phases have been collapsed (and named
"play()"). This single step sets initial values for target views
and creates any Animators that should be played during the transition.
The transition mechanism stores these Animators and then starts
them at the appropriate time in the overall transition.

Issue #9507585 Transitions: Simplify Transition.play() design

Change-Id: I3fc67599b38fe49eee885dc5d32444db90b7703b
2013-06-21 16:07:14 -07:00