From 65752fbf7755904fef2ce9302d8854559a00afb6 Mon Sep 17 00:00:00 2001 From: Brian Salomon Date: Tue, 6 Dec 2022 15:06:25 +0000 Subject: [PATCH] Prepare for change to SkMesh::Make[Indexed] return type. Bug: b/260252882 Change-Id: I85e46dcb5ed39fb207d51578138336c1171de379 Test: compiles --- libs/hwui/jni/Mesh.cpp | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/libs/hwui/jni/Mesh.cpp b/libs/hwui/jni/Mesh.cpp index 109aac321b6e6..7c732d7fdcf2d 100644 --- a/libs/hwui/jni/Mesh.cpp +++ b/libs/hwui/jni/Mesh.cpp @@ -37,6 +37,16 @@ sk_sp genIndexBuffer(JNIEnv* env, jobject buffer, int size, return indexBuffer; } +// TODO(b/260252882): undefine SK_LEGACY_MESH_MAKE and remove this. +template +SkMesh get_mesh_from_result(T&& result) { +#ifdef SK_LEGACY_MESH_MAKE + return result; +#else + return result.mesh; +#endif +} + static jlong make(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobject vertexBuffer, jboolean isDirect, jint vertexCount, jint vertexOffset, jint left, jint top, jint right, jint bottom) { @@ -44,8 +54,8 @@ static jlong make(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobject verte sk_sp skVertexBuffer = genVertexBuffer(env, vertexBuffer, vertexCount * skMeshSpec->stride(), isDirect); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); - auto mesh = SkMesh::Make(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, - vertexOffset, nullptr, skRect); + auto mesh = get_mesh_from_result(SkMesh::Make(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, + vertexCount, vertexOffset, nullptr, skRect)); auto meshPtr = std::make_unique(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); return reinterpret_cast(meshPtr.release()); } @@ -60,9 +70,9 @@ static jlong makeIndexed(JNIEnv* env, jobject, jlong meshSpec, jint mode, jobjec sk_sp skIndexBuffer = genIndexBuffer(env, indexBuffer, indexCount * gIndexByteSize, isIndexDirect); auto skRect = SkRect::MakeLTRB(left, top, right, bottom); - auto mesh = SkMesh::MakeIndexed(skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, - vertexOffset, skIndexBuffer, indexCount, indexOffset, nullptr, - skRect); + auto mesh = get_mesh_from_result(SkMesh::MakeIndexed( + skMeshSpec, SkMesh::Mode(mode), skVertexBuffer, vertexCount, vertexOffset, + skIndexBuffer, indexCount, indexOffset, nullptr, skRect)); auto meshPtr = std::make_unique(MeshWrapper{mesh, MeshUniformBuilder(skMeshSpec)}); return reinterpret_cast(meshPtr.release()); } @@ -71,14 +81,15 @@ static void updateMesh(JNIEnv* env, jobject, jlong meshWrapper, jboolean indexed auto wrapper = reinterpret_cast(meshWrapper); auto mesh = wrapper->mesh; if (indexed) { - wrapper->mesh = SkMesh::MakeIndexed( + wrapper->mesh = get_mesh_from_result(SkMesh::MakeIndexed( sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.vertexBuffer()), mesh.vertexCount(), mesh.vertexOffset(), sk_ref_sp(mesh.indexBuffer()), - mesh.indexCount(), mesh.indexOffset(), wrapper->builder.fUniforms, mesh.bounds()); + mesh.indexCount(), mesh.indexOffset(), wrapper->builder.fUniforms, mesh.bounds())); } else { - wrapper->mesh = SkMesh::Make( - sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.vertexBuffer()), - mesh.vertexCount(), mesh.vertexOffset(), wrapper->builder.fUniforms, mesh.bounds()); + wrapper->mesh = get_mesh_from_result( + SkMesh::Make(sk_ref_sp(mesh.spec()), mesh.mode(), sk_ref_sp(mesh.vertexBuffer()), + mesh.vertexCount(), mesh.vertexOffset(), wrapper->builder.fUniforms, + mesh.bounds())); } }