It was previously the case that a view marked ~DRAWN must be
invalidated correctly already, so we would not mark any flags.
Display lists added new logic such that an undrawn node must still
be checked to see if its cache has been marked invalid. If not,
we must mark it invalid to make sure that a future rendering call
will cause the view to refresh its display list, thus refreshing its
child node tree's display lists, since that's where the invalidate
call must have originated.
Change-Id: I0f73c85459174c0e3f16d703f7eb914a706c808a
gcSoftReferences methods are being obsoleted, so we need a different
approach to wait for gc: create a CountDownLatch and release it in
a dummy object's finalizer, call gc and await on the CDL.
Change-Id: I54d9e6bc05540b16ee1f3959ace9008041ac4903
The calculation for determine the content view's bounds
was mistakenly using the position of the view in the immediate
parent (glow view), which wrapped it exactly in the vertical
direction. The code now uses the glow view's vertical
position in its parent to determine the position.
Change-Id: I07768eb3446fde851699de1c1d4e958bc16d98bb
Fixed modifier key assets to match Latin IME.
Added background to alphanumeric keyboard.
Added 25% alpha background to numeric keyboard.
Change-Id: I043171a5dec7eeb0c136bb7450fd4023208639dc
The touch screen sometimes reports more than 10 pointers even though that's
all we asked for. When this happens, we start dropping events with more
than 10 pointers. This confuses applications and causes them to crash.
Raised the limit to 16 pointers.
Bug: 3331247
The default behavior was to identify all touch devices as touch screens.
External devices that are plugged in are more likely to be touch pads
not attached to a screen. Changed the default to be a touch pad
and renamed some internal constants to avoid confusion.
A certain mouse happens to also behave like a touch pad. That caused
problems because we would see multiple concurrent traces of motion events
coming from the same input device so we would batch them up.
Added code to ensure that we don't batch events unless they come from
the same *source* in addition to coming from the same *device*.
Due to batching or misbehaving drivers, it's possible for the set of
pointer ids to be different from what we expect when it comes time to
split motion events across windows. As a result, we can generate motion
events with 0 pointers. When we try to deliver those events, we cause
an error in the InputTransport so we tear down the InputChannel and kill
the application.
Added code to check out assumption about pointer ids and drop the
event gracefully instead.
Patched up the tests to take into account the change in default behavior
for identifying touch screens and touch pads.
Change-Id: Ic364bd4cb4cc6335d4a1213a26d6bdadc7e33505