Improved how the various callbacks are managed and sequenced
to reduce code duplication.
Added a heuristic to avoid postponing traversals until
the next vsync frame if we did not actually do any drawing during
the previous frame. This helps in the very common case where
drawing occurs in response to input.
Change-Id: I277d9eeaf50408f8745a3cfd181db1d140770658
The new DisplayList properties design has ordering conflicts with the
way that alpha works with old animations (AlphaAnimation). This CL
disables DiksplayList properties while I'm working on a fix and some
more thorough tests for old animations-vs-DL properties in general.
Change-Id: I8f6893138f939171491c2ec3c889214ee55d17b7
GLES20Canvas defined several JNI functions used only by HardwareRenderer.
Now that we have a JNI layer dedicated to HardwareRenderer we should
host the renderer related methods there.
Change-Id: I0bcb4ad0bcc1c4a37290df10c1685f2cfe5504ca
Several issues came up after DisplayList properties were enabled,
so they were disabled pending fixes. Those issues have been fixed, so
DisplayList properties are once again being enabled by default. This
CL both re-enables these properties (in View.java and DisplayListRenderer.h)
and fixes the various issues that enabling them caused the first time around.
Related issues (all currently marked as Fixed, though that was simply because
DL properties were disabled - this CL provides the real fixes now that
DL properties are enabled by default):
Issue #6198276 Text input broken
Issue #6198472 Native crash at pc 00076428 in many different apps in JRM80
Issue #6204173 Date/time picker isn't rendering all parts of UI
Issue #6203941 All Apps overscroll effect is rendered weirdly/has flickering
Issue #6200058 CAB rendering issue - not drawing items?
Issue #6198578 Front camera shows black screen after taking picture.
Issue #6232010 Layers not recreated when children change (DisplayList properties)
Change-Id: I8b5f9ec342208ecb20d3e6a60d26cf7c6112ec8b
WebView needs more fine-grained control over the behavior of the
framework upon execution of the display lists. The new status_t
allows WebView to requests its functor to be re-executed directly
without causing a redraw of the entire hierarchy.
Change-Id: I97a8141dc5c6eeb6805b6024cc1e76fce07d24cc
Bug #6109035
ViewRootImpl.die() can be invoked in such a way that doDie() will be
executed later. On memory limited device, an eglTerminate() may happen
before doDie() is executed which leads to unstable behaviors. This
change makes sure the renderer is destroyed as soon as possible.
Change-Id: I3322410cdd744b464951e2055aeade6069d1d673
Use it for recent tasks switching.
Not perfect yet by far, but something.
Also fix issue #6186758: Twitter crashes after tapping on a tweet on JRM75D
Change-Id: I49bf6c94aafde875ac652dedaf96d6c08cc9e7d2
We will fail later anyways, but this change makes it much easier to track
down places where we are inadvertently doing operations that depend on the
flinger.
Change-Id: If38a1a10061a594dba5c220a86b32eec7b5ec901
DisplayList properties are (again) disabled by default, via flags in
View.java and DisplayListRenderer.h. There are various artifacts to
chase down before enabling by default.
Issue #6198472 Native crash at pc 00076428 in many different apps in JRM80
Issue #6204173 Date/time picker isn't rendering all parts of UI
Issue #6203941 All Apps overscroll effect is rendered weirdly/has flickering
Issue #6200058 CAB rendering issue - not drawing items?
Issue #6198578 Front camera shows black screen after taking picture.
Change-Id: I045dc82ce1d85fedbae3bb88eb2a2dfb6891d41f
The new DisplayList properties functionality does not currently handle Animation
(android.view.animation) functionality, so we fall back to the previous approach
of redrawing the DisplayList when an Animation changes alpha/transform data for
a View. The DL code was not, however, correctly using that logic, so that
the Animation transform information was being ignored, or at least not set
correctly on the DisplayList during redraws.
This fix accounts for Animation changes and sets up the DisplayList correctly.
Change-Id: I9f6e0382b05d0627f4779f30e74641dedcc77f82
A new test had been added to performDraw to provide an early return if
the screen was off. Drawing should have proceeded however if
mReportNextDraw is set. Otherwise views that turn on the screen (such
as the alarm) are not shown.
Fixes bug 6168158.
Change-Id: If9013d9dbd39d60ee1de8aeb3e0c1facbc5a7db5
1. The number picker no longer shows up and down arrows, it
has only three touch targets which are the currently selected number
in the middle with a lesser one above and greater below, now what
you touch is what you get, flingability and long press are still
supported.
2. Removed the restriction for a View with an AccessibilityNodeProvider
to not have any concrete children. If the View has a provider, then
this provider is responsible for creating the AccessibilityNodeInfos
for all its descendants, concrete and virtual. The number picker is
a good example for such a case - it has a concrete input view and
two virtual buttons as its children. This is a safe change since
this behavior has not been released.
3. This patch also fixes bug where the number picker is stretched too
much in the Theme theme.
bug:6177794
bug:5728294
Change-Id: I5fb370fe0b864a156f5f2aaf2de5f55f6b6d4e84
This CL simply enables DisplayList property functionality. The code for
this feature is already there, but it's been disabled by default pending further
testing and analysis. This change sets these build-type flags to true
so that all hw-accelerated apps will now use DisplayList properties by default.
In particular, this feature enables a fast-path for changes that affect the
handful of View properties involved in animations (alpha, translationX, etc.).
Setting these properties now gets propagated to the native DisplayList associated
with the View, avoiding costly recreation of the SDK-level DisplayList and
also enabling faster invalidation of the view hierarchy.
Change-Id: Ic99c8f28fa9183f2e54e9e4860b333eb9c540f7c
1. The number picker no longer shows up and down arrows, it
has only three touch targets which are the currently selected number
in the middle with a lesser one above and greater below, now what
you touch is what you get, flingability and long press are still
supported.
2. Removed the restriction for a View with an AccessibilityNodeProvider
to not have any concrete children. If the View has a provider, then
this provider is responsible for creating the AccessibilityNodeInfos
for all its descendants, concrete and virtual. The number picker is
a good example for such a case - it has a concrete input view and
two virtual buttons as its children. This is a safe change since
this behavior has not been released.
3. This patch also fixes bug where the number picker is stretched too
much in the Theme theme.
bug:6177794
bug:5728294
Change-Id: Id8c0b3549174b9599f971d6e3086ca427cfbaa39
DisplayList properties are still disabled default (flags in View.java
and DisplayListRenderer.h). When they are enabled, and when a View has
a DisplayList, invalidations due to property changes are now optimized
to avoid causing DisplayList recreation. This eliminates the drawing step
of invalidation (due to changes in these properties), only requiring
issuing the previously-created DisplayList to the GL renderer. Invalidation
is slightly faster (less overhead as we walk up the hierarchy), getDisplayList()
is potentially much faster (going down to ~0ms), depending on the complexity
of the View being redrawn and the size of the invalidated hierarchy.
Change-Id: I57587d5b810c3595bdd72a6c52349c2a3d1bdf25