Forgetting to release it was "safe" in that GC would eventually
tidy it up anyway, but in the meantime it was possible for a user to
do lots of drag operations, racing ahead of the progress of the garbage
collector, and wind up with drags failing because we'd run out of
surface slots due to all the piled up stale drag shadows.
Change-Id: I7ac93b13cc9996dda04a404571fbc44cb4314694
This prevents animations and other live page content from consuming
too many resources while the user is interacting with a popup window.
Bug 5300522
Change-Id: I40fb6d16d56b540c431172052a1ae7fead7109be
Fixes up some recycling of TypedArray objects to reduce the
number we need to allocate during inflation etc.
Change-Id: I948dccc052997779001eaa99db2a710b04be01ae
1. Added an AccessibilityDelegate class in View which can be set by
a client that wants to cutomize accessibility behavior via
composition as opposed to inheritance. Insead overriding a new method in
View thus being bound to the API version that introduced this
method a developer can conditionally inject the accessibility
customization if the platform API version is heigh enough. The
developer will have to override the method of interest of the
delegate. The default implementation of the delegate methods is
the same as that of View in the case that there is no delegate
set. If a delegate is set calling an accessibility related method
on View will be handed off to the corresponsing method of the
delegate.
bug:5259555
Change-Id: I00e750e22e5e7164a1b571cb3d12ecaf4ab93db4
A core app is one that has coreApp="true" in its manifest tag.
The system can successfully boot (though a little painfully) with
only framework-res.apk, SettingsProvider.apk, SystemUI.apk,
DefaultContainerService.apk, and Launcher2.apk set as core apps.
Currently this boot mode is always turned off.
Change-Id: Ieaa4a8031c2c391a12996aa8d8b1d65fc2b09d6b
b/5278759 API changes to pass package, options
b/5249018 consistent/customized add account UI
b/5270079 tag who adds the account
Change-Id: I1ee211d751b565c725c89aa1a429ef2f5bebe34a
Variable is not needed, and removing unneeded check
Also throwing an exception if sContext gets set to null.
Change-Id: Ic61ba4c88a162eb730e166f0e9f477e809b51f42
Also fixes the right margin for single pane preferences on phones, so the
scrollbar is fully visible.
Bug: 5262868
Bug: 5263470
Change-Id: Ifbbe22744bd42ab33578d1f01daecdea4d59f5cc
The DIRTY flag is used to track which elements of the view hierarchy need
to be redrawn on the next drawing operation. This flag is set on the parent
hierarchy of a view when that view is invalidated. There is an optimization for
opaque views that tells the parent that it is dirty, but that it need not
redraw its own content because the view will cover it (since it is opaque).
This dirty-opaque logic breaks down in the current code because we only set
these dirty flags on the parent hierarchy, not on the view itself. In the situation
raised by this bug, we would invalidate the parent container directly (which does
not case the dirty flag to be set), then we would invalidate a child of that view.
Because the child is opaque, the DIRTY_OPAQUE flag would be set on the parent
container. This would cause us, in the later rendering process, to skip the
drawing on that parent container, assuming that it was only asked to be redrawn
because of its opaque child's invalidation.
The fix is to now set the DIRTY flag on an invalidated view, not just on its parent
hierarchy. The DIRTY_OPAQUE logic will avoid setting the opaque flag on views/parents
that are already marked DIRTY, thus an invalidated parent will be correctly drawn
during the drawing process.
Change-Id: Ib5e014a125a4f5168f6a5a3166e941474659aca5