Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c7bd2073 authored by Michael Hoisie's avatar Michael Hoisie
Browse files

Add an alternative to PathIterator.nNext for host

PathIterator uses VMRuntime.newNonMovableArray and VMRuntime.addressOf
to create a region of memory for iterating over path segments.

However, VMRuntime.newNonMovableArray and VMRuntime.addressOf are
libcore-only and not supported on the host JVM. This causes problems
when Compose animations run on host runtimes such as LayoutLib,
Ravenwood, and Robolectric.

Add a variant method PathIterator.nNextHost that passes the float array
(not just the address) to a regular JNI method.

An alternative to this would be to convert `nNext` to a `FastNative`,
but that would slow it down on Android.

Another alternative would be to require LayoutLib/Ravenwood/Robolectric
to use some DirectByteBuffer hacks to simulate a non-movable address,
but that would require each framework to delegate/fake/shadow parts of
PathIterator. This approach solves it in one fell swoop.

Flag: NONE host-only change
Bug: 354621198
Bug: 357624564
Test: cts PathIteratorTest
Change-Id: Idfd2b6e41b499efffbbf5cbef343183981edd7b2
parent 6b09d0b0
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment