From c275f61aebf24c474efdbe1640ed90d563e468c3 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Thu, 2 Dec 2021 08:53:55 -0800 Subject: [PATCH] Add missing destroy method (#4921) --- .../filament-android/src/main/cpp/Engine.cpp | 52 ++++++++++--------- .../com/google/android/filament/Engine.java | 10 ++++ 2 files changed, 38 insertions(+), 24 deletions(-) diff --git a/android/filament-android/src/main/cpp/Engine.cpp b/android/filament-android/src/main/cpp/Engine.cpp index 56caaa769c..ea861db3a9 100644 --- a/android/filament-android/src/main/cpp/Engine.cpp +++ b/android/filament-android/src/main/cpp/Engine.cpp @@ -45,12 +45,11 @@ extern "C" { // handle. Whatever object is returned from this method must match what is in // folder filament/src/driver/opengl/Context* in particular pay attention to // the object type in makeCurrent method. -extern void *getNativeWindow(JNIEnv *env, jclass, jobject surface); +extern void* getNativeWindow(JNIEnv* env, jclass, jobject surface); } extern "C" JNIEXPORT jlong JNICALL -Java_com_google_android_filament_Engine_nGetBackend(JNIEnv* env, - jclass klass, jlong nativeEngine) { +Java_com_google_android_filament_Engine_nGetBackend(JNIEnv*, jclass, jlong nativeEngine) { Engine* engine = (Engine*) nativeEngine; return (jlong) engine->getBackend(); } @@ -64,8 +63,8 @@ Java_com_google_android_filament_Engine_nCreateSwapChain(JNIEnv* env, } extern "C" JNIEXPORT jlong JNICALL -Java_com_google_android_filament_Engine_nCreateSwapChainHeadless(JNIEnv* env, - jclass klass, jlong nativeEngine, jint width, jint height, jlong flags) { +Java_com_google_android_filament_Engine_nCreateSwapChainHeadless(JNIEnv*, + jclass, jlong nativeEngine, jint width, jint height, jlong flags) { Engine* engine = (Engine*) nativeEngine; return (jlong) engine->createSwapChain(width, height, (uint64_t) flags); } @@ -81,7 +80,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroySwapChain(JNIEnv*, jclass, jlong nativeEngine, jlong nativeSwapChain) { Engine* engine = (Engine*) nativeEngine; - SwapChain *swapChain = (SwapChain *) nativeSwapChain; + SwapChain* swapChain = (SwapChain*) nativeSwapChain; return engine->destroy(swapChain); } @@ -98,7 +97,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyView(JNIEnv*, jclass, jlong nativeEngine, jlong nativeView) { Engine* engine = (Engine*) nativeEngine; - View *view = (View *) nativeView; + View* view = (View*) nativeView; return engine->destroy(view); } @@ -115,7 +114,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyRenderer(JNIEnv*, jclass, jlong nativeEngine, jlong nativeRenderer) { Engine* engine = (Engine*) nativeEngine; - Renderer *renderer = (Renderer *) nativeRenderer; + Renderer* renderer = (Renderer*) nativeRenderer; return engine->destroy(renderer); } @@ -158,7 +157,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyScene(JNIEnv*, jclass, jlong nativeEngine, jlong nativeScene) { Engine* engine = (Engine*) nativeEngine; - Scene *scene = (Scene *) nativeScene; + Scene* scene = (Scene*) nativeScene; return engine->destroy(scene); } @@ -175,7 +174,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyFence(JNIEnv*, jclass, jlong nativeEngine, jlong nativeFence) { Engine* engine = (Engine*) nativeEngine; - Fence *fence = (Fence *) nativeFence; + Fence* fence = (Fence*) nativeFence; return engine->destroy(fence); } @@ -185,7 +184,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyStream(JNIEnv*, jclass, jlong nativeEngine, jlong nativeStream) { Engine* engine = (Engine*) nativeEngine; - Stream *stream = (Stream *) nativeStream; + Stream* stream = (Stream*) nativeStream; return engine->destroy(stream); } @@ -195,7 +194,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyIndexBuffer(JNIEnv*, jclass, jlong nativeEngine, jlong nativeIndexBuffer) { Engine* engine = (Engine*) nativeEngine; - IndexBuffer *indexBuffer = (IndexBuffer *) nativeIndexBuffer; + IndexBuffer* indexBuffer = (IndexBuffer*) nativeIndexBuffer; return engine->destroy(indexBuffer); } @@ -203,15 +202,23 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyVertexBuffer(JNIEnv*, jclass, jlong nativeEngine, jlong nativeVertexBuffer) { Engine* engine = (Engine*) nativeEngine; - VertexBuffer *vertexBuffer = (VertexBuffer *) nativeVertexBuffer; + VertexBuffer* vertexBuffer = (VertexBuffer*) nativeVertexBuffer; return engine->destroy(vertexBuffer); } +extern "C" JNIEXPORT jboolean JNICALL +Java_com_google_android_filament_Engine_nDestroySkinningBuffer(JNIEnv*, jclass, + jlong nativeEngine, jlong nativeSkinningBuffer) { + Engine* engine = (Engine*) nativeEngine; + SkinningBuffer* skinningBuffer = (SkinningBuffer*) nativeSkinningBuffer; + return engine->destroy(skinningBuffer); +} + extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyIndirectLight(JNIEnv*, jclass, jlong nativeEngine, jlong nativeIndirectLight) { Engine* engine = (Engine*) nativeEngine; - IndirectLight *indirectLight = (IndirectLight *) nativeIndirectLight; + IndirectLight* indirectLight = (IndirectLight*) nativeIndirectLight; return engine->destroy(indirectLight); } @@ -219,7 +226,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyMaterial(JNIEnv*, jclass, jlong nativeEngine, jlong nativeMaterial) { Engine* engine = (Engine*) nativeEngine; - Material *material = (Material *) nativeMaterial; + Material* material = (Material*) nativeMaterial; return engine->destroy(material); } @@ -235,7 +242,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroySkybox(JNIEnv*, jclass, jlong nativeEngine, jlong nativeSkybox) { Engine* engine = (Engine*) nativeEngine; - Skybox *skybox = (Skybox *) nativeSkybox; + Skybox* skybox = (Skybox*) nativeSkybox; return engine->destroy(skybox); } @@ -251,7 +258,7 @@ extern "C" JNIEXPORT jboolean JNICALL Java_com_google_android_filament_Engine_nDestroyTexture(JNIEnv*, jclass, jlong nativeEngine, jlong nativeTexture) { Engine* engine = (Engine*) nativeEngine; - Texture *texture = (Texture *) nativeTexture; + Texture* texture = (Texture*) nativeTexture; return engine->destroy(texture); } @@ -272,7 +279,7 @@ Java_com_google_android_filament_Engine_nDestroyEntity(JNIEnv*, jclass, } extern "C" JNIEXPORT void JNICALL -Java_com_google_android_filament_Engine_nFlushAndWait(JNIEnv *env, jclass clazz, +Java_com_google_android_filament_Engine_nFlushAndWait(JNIEnv*, jclass, jlong nativeEngine) { Engine* engine = (Engine*) nativeEngine; engine->flushAndWait(); @@ -281,22 +288,19 @@ Java_com_google_android_filament_Engine_nFlushAndWait(JNIEnv *env, jclass clazz, // Managers... extern "C" JNIEXPORT jlong JNICALL -Java_com_google_android_filament_Engine_nGetTransformManager(JNIEnv*, jclass, - jlong nativeEngine) { +Java_com_google_android_filament_Engine_nGetTransformManager(JNIEnv*, jclass, jlong nativeEngine) { Engine* engine = (Engine*) nativeEngine; return (jlong) &engine->getTransformManager(); } extern "C" JNIEXPORT jlong JNICALL -Java_com_google_android_filament_Engine_nGetLightManager(JNIEnv*, jclass, - jlong nativeEngine) { +Java_com_google_android_filament_Engine_nGetLightManager(JNIEnv*, jclass, jlong nativeEngine) { Engine* engine = (Engine*) nativeEngine; return (jlong) &engine->getLightManager(); } extern "C" JNIEXPORT jlong JNICALL -Java_com_google_android_filament_Engine_nGetRenderableManager(JNIEnv*, jclass, - jlong nativeEngine) { +Java_com_google_android_filament_Engine_nGetRenderableManager(JNIEnv*, jclass, jlong nativeEngine) { Engine* engine = (Engine*) nativeEngine; return (jlong) &engine->getRenderableManager(); } diff --git a/android/filament-android/src/main/java/com/google/android/filament/Engine.java b/android/filament-android/src/main/java/com/google/android/filament/Engine.java index 700f6f870f..212e2c5889 100644 --- a/android/filament-android/src/main/java/com/google/android/filament/Engine.java +++ b/android/filament-android/src/main/java/com/google/android/filament/Engine.java @@ -516,6 +516,15 @@ public class Engine { vertexBuffer.clearNativeObject(); } + /** + * Destroys a {@link SkinningBuffer} and frees all its associated resources. + * @param skinningBuffer the {@link SkinningBuffer} to destroy + */ + public void destroySkinningBuffer(@NonNull SkinningBuffer skinningBuffer) { + assertDestroy(nDestroySkinningBuffer(getNativeObject(), skinningBuffer.getNativeObject())); + skinningBuffer.clearNativeObject(); + } + /** * Destroys a {@link IndirectLight} and frees all its associated resources. * @param ibl the {@link IndirectLight} to destroy @@ -693,6 +702,7 @@ public class Engine { private static native boolean nDestroyStream(long nativeEngine, long nativeStream); private static native boolean nDestroyIndexBuffer(long nativeEngine, long nativeIndexBuffer); private static native boolean nDestroyVertexBuffer(long nativeEngine, long nativeVertexBuffer); + private static native boolean nDestroySkinningBuffer(long nativeEngine, long nativeSkinningBuffer); private static native boolean nDestroyIndirectLight(long nativeEngine, long nativeIndirectLight); private static native boolean nDestroyMaterial(long nativeEngine, long nativeMaterial); private static native boolean nDestroyMaterialInstance(long nativeEngine, long nativeMaterialInstance);