The Skia API has been relaxed on the types of input it will accept,
but in order to preserve the old API behavior we need to test for
those conditions in Java.
bug: 27682974
Change-Id: I9a33acdcd8f55c63d2e42f1733e94bf695193ac7
Many classes in graphics/java and elsewhere deallocate native memory
in a finalizer on the assumption that instance methods can no longer
be called once the finalizer has been called. This is incorrect if
the object can be used, possibly indirectly, from another finalizer,
possibly one in the application.
This is the initial installment of a patch to cause such post-finalization
uses to at least see a null pointer rather than causing memory corruption
by accessing deallocated native memory. This should make it possible to
identify and fix such finalization ordering issues.
There are more graphics classes that need this treatment, and probably
many more in other subsystems.
This solution is < 100% effective if finalizers can be invoked
concurrently. We currently promise that they aren't.
(In my opinion, the real cause here is a language spec bug. But that ship
has sailed.)
Bug: 18178237
Change-Id: I844cf1e0fbb190407389c4f8e8f072752cca6198
Logic in the hardware renderer optimizes path rendering for simple
paths that consist of only rectangles. Any operation on the path that
adds any other primitive sets the simplicity flag to false appropriately.
PathMeasure.getSegment(), however, avoids those code paths and never sets
the mIsSimple flag at all, so it returns its original value (true, if the
path was simply constructed with no operations before being used in the
getSegment() call).
The fix is to avoid the optimization for paths used in getSegment(), since
it's not clear what operations will end up in the path and it's likely not
going to be just simple rectangles in any case.
Issue #12533902 PathMeasure.getSegment is broken
Change-Id: I71e77207e4d5c649c326557d33eba31e9b0fd45e
For storing pointers, long is used in
android/graphics/PathMeasure class, as native
pointers can be 64-bit.
In addition, some minor changes have been done
to conform with standard JNI practice (e.g. use
of jint instead of int in JNI function prototypes)
Change-Id: I4599a9d5f7dcf9c39838db96d9033059114d3a49
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>