bug:27275799
Skip applying clip/matrix properties from projected node op, since we
don't want to respect the clip, and matrix is already baked into
transformFromCompositedAncestor.
This skips op clips in the new pipeline, and fixed a double application
of scroll on ripple backgrounds.
Change-Id: I4f72448fe0463ab666564ca538d8b6bf525d98de
bug:27381362
Also rejects ops with empty clip at record time, and short circuits clip
intersection, when one is empty.
Change-Id: I842612da14ad8fd9f1ba5e9e4fd027ba4e08d365
bug:27225580
bug:27281241
Empty unclipped savelayers (clipped at defer time, often by dirty rect)
were resulting in invalid layer clear rectangles. Simplify by just
rejecting these unclipped savelayers entirely at defer.
Also, use repaint rect as base clip for constructed ops within
LayerBuilder.
Change-Id: I5c466199e85201a2f68f5cdc60b29187c849961b
A slow listener could cause a race in the NotifyHandler
where the single reference to the buffer to send would get
updated when it shouldn't have been.
Switch to a queue of available buffers to prevent this race.
Also, stop setting and clearing the observer reference and instead
incStrong/decStrong to mark temporary strong ownership without
colliding with other owners in flight.
Bug: 27097094
Change-Id: Iee647bfae8b80019b6d8290179eed3973230901f
Bug: 27072626
Or at least fix this one and make it harder to leak
going forward. static_asserts are cool, use them liberally
Also makes allocation via LA (slightly) faster by fixing create*
variants to use rvalue references & std::forward, preventing
an accidental pass-by-value
Change-Id: I18fd696a93dd6ea49c8d8c587d4c8bee56dbfdf5
Bug: 27072626
Or at least fix this one and make it harder to leak
going forward. static_asserts are cool, use them liberally
Also makes allocation via LA (slightly) faster by fixing create*
variants to use rvalue references & std::forward, preventing
an accidental pass-by-value
Change-Id: I5e0e36e72c6dd93324194ebf9a95f8204f05f261
bug:26524690
Don't intersect the first clip with the viewport. Instead, the first
clip op should always be a replace op.
Additionally, only quick reject nodes that clip to bounds, since some
nodes (like ripples) draw outside their own bounds.
Change-Id: I96a52029f360328aba19af7349888cc0a026b5b1
Bug: 26862239
Switch TextDropCacheShadow to use the tracked objectSize()
instead of the optional bitmapSize. A mismatch here
results in ::get() infinite looping trying to free space in
the cache since the LRU removal callback would always
decrement mSize by 0 since bitmapSize was not being set.
Also prevent the infinite loop in the future by crashing if
this scenario happens again.
Change-Id: Ib4e9fbe1c8327af2335ad650fd694a1627d9824f
Disable FrameBuilder.clippedMerging as it relies on
merged bitmap ops which was disabled in b/26793764
Fix Buffer to correctly initialize mRefs count
Change-Id: I87d2fcc690a2ae14eaf751f650f522be5b622edf
Full GLES error checking layer via -include
trickery. Change DEBUG_OPENGL to a level system.
HIGH = every GL call is error checked
MODERATE = checkpointing at interesting spots
LOW = only asserts there are no errors at the end of a frame
or when the FBO changes
NONE = AIN'T GOT NO TIME FOR ERRORS GOTTA GO FAST!
Change-Id: Ibe81aae93d942059c4ddf1cbb11c828b7ce4c10b
Skia's SkCanvas::SaveFlags are being deprecated. This CL introduces
the equivalent android::SaveFlags, converts all internal clients to
the new enum, and switches the saveLayer glue to the
SaveLayerRec-based API.
Change-Id: Icb1785f4e7c0f652b1f04b34a1e3ccb063c408f3