The fix is to track when we issue GL drawing commands, and to skip the
call to eglSwapBuffers() when a DisplayList does not result in
any actual rendering calls to GL.
Issue #6364143 QuickMuni list items and buttons flicker instead of fade
Change-Id: I60a02c61a58c32d92481a1e814b4c8a49c6a37a3
This also removes the temporary logging from commit
f8dafa14e058cdc2f408b59be7911abaceb73c47.
bug:6535911
Change-Id: Icf1d0438b349a0e92e7d9cefed57a252eed2b9b0
Bug #6527305
At the beginning of a frame, always set the blending mode that we
think GL is using just in case it was modified by another entity
(for instance a WebView functor.)
Change-Id: I0e1d0abee8a2abb2b8e7622aed28346e89562c06
The comparisons used in the various properties setters could fail badly
in some specific conditions. The scale properties in particular did not
use the same comparisons.
This change also clamps alpha to the 0..1 range which avoids overflow
issues with lowp registers in GLSL computations.
Change-Id: I3e73b584e907a14e2c33d0865ca0d2d4d5bff31d
Some input devices do not generate ACTION_MOVE events while all
pointers have stopped, thereby lulling the VelocityTracker into
a false sense of complacency. Before handling the following sample,
reset the VelocityTracker state so as not to be influenced by
earlier samples before the pointer stopped. The velocity after
stopping is assumed to be discontinuous.
Bug: 6413587
Change-Id: I6387bc036ff141d083d3d17a89e37eeaa3188349
VelocityTracker was implicitly assuming that the pointer ids in
a MotionEvent were ordered. That is not necessarily the case
so we need to be careful while copying the pointer coordinates out.
Bug: 6413587
Change-Id: I3b23a954f893eebdf786f2a94207149b092ef036
Fixed a few bugs related to the id-to-index mapping for
pointer coordinates.
Tightened the bounds on the resampling time interval to
avoid predicting too far into the future.
Only lerp X and Y components of motion events.
Alter the future to satisfy past predictions. (Rewrite touch
events to conceal obvious discontinuities.)
Added a system property to control whether resampling is enabled
for debugging purposes.
Bug: 6375101
Change-Id: I35972d63278bc4e78148053a4125ad9abeebfedb
Bug #6408362
FontRenderer allocates large font textures when more room is needed
to store all the glyphs used by an application. Thse large textures
are the first to be freed when memory needs to be reclaimed by the
system. When freeing a texture, the renderer would however not set
the texture name to an invalid name, leading future allocations to
be performed on the same texture name. That name could have by then
be recycled by the driver and returned by a call to glGenTexture
and used to create an entirely different texture. This would cause
the font renderer to point to the wrong texture, thus leading to
the "corruptions."
Change-Id: I8a1e80e5b79e8f21d1baf5320c090df4f2066cd4
Some logic in the native matrix code would determine that a matrix was
'pureTranslate' based on the scale values of a matrix being close-enough to 1,
which was within a very small epsilon. This works in general, because screen space
coordinates make that epsilon value irrelevant, so close-enough really is close-enough.
However, TextView, when centering text, works in a coordinate system that is quite
huge, with left/right values about 500,000. These numbers multiplied times that small
epsilon value would give a result that was significant, and would cause a miscalculation
of up to 4-5 pixels, causing the snap that we'd see for a couple of frames as the
scale got "close enough" to 1.
The fix is to remove the optimization of "close enough". What we really need the matrix to
do is to identify itself as being translate-only when no scale as been set (which is the
default). For the purposes of that check, it is good enough to simply check the values against
1 directly. Similarly, the bounds-check logic needs to check against 0 and 1 directly.
Issue #6452687: Glitch when changing scale of a view containing text
Change-Id: I167fb45d02201fb879deea0e5a7ca95e38128e17
An optimization for paths is to only create a texture for the original native
Path object, and have all copies of that object use that texture. This works in
most cases, but sometimes that original path object may get destroyed (when the
SDK path object is finalized) while we are still referencing and using that object
in the DisplayList code. This causes undefined errors such as crashes and hanging
as we iterate through the operations of a destroyed (and garbage-filled) path object.
The fix is to use the existing ResourceCache to refcount the original path until
we are done with it.
Issue #6414050 Analytics Dogfood App crashes reliably on Jellybean
Change-Id: I5dbec5c069f7d6a1e68c13424f454976a7d188e9