diff options
author | Conley Owens <cco3@android.com> | 2011-05-02 10:11:52 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2011-05-02 10:11:52 -0700 |
commit | e7cb25916c70625e9086386293247ec604753d5c (patch) | |
tree | 7b1eabae252f5563492ca94f7b8f7c001b335c75 | |
parent | 3581c933931d18ef5a742688bc89181b48df6cb8 (diff) | |
parent | 1eb31b434fdc325c55b65ecf1783c63b2fdfa669 (diff) | |
download | frameworks_base-e7cb25916c70625e9086386293247ec604753d5c.zip frameworks_base-e7cb25916c70625e9086386293247ec604753d5c.tar.gz frameworks_base-e7cb25916c70625e9086386293247ec604753d5c.tar.bz2 |
am 1eb31b43: am 718516f3: am 9fd8e057: Merge "Fix memory leak of SkMovie class"
* commit '1eb31b434fdc325c55b65ecf1783c63b2fdfa669':
Fix memory leak of SkMovie class
-rw-r--r-- | core/jni/android/graphics/Movie.cpp | 5 | ||||
-rw-r--r-- | graphics/java/android/graphics/Movie.java | 11 |
2 files changed, 16 insertions, 0 deletions
diff --git a/core/jni/android/graphics/Movie.cpp b/core/jni/android/graphics/Movie.cpp index c112423..c1acaa3 100644 --- a/core/jni/android/graphics/Movie.cpp +++ b/core/jni/android/graphics/Movie.cpp @@ -112,6 +112,10 @@ static jobject movie_decodeByteArray(JNIEnv* env, jobject clazz, return create_jmovie(env, moov); } +static void movie_destructor(JNIEnv* env, jobject, SkMovie* movie) { + delete movie; +} + ////////////////////////////////////////////////////////////////////////////////////////////// #include <android_runtime/AndroidRuntime.h> @@ -126,6 +130,7 @@ static JNINativeMethod gMethods[] = { (void*)movie_draw }, { "decodeStream", "(Ljava/io/InputStream;)Landroid/graphics/Movie;", (void*)movie_decodeStream }, + { "nativeDestructor","(I)V", (void*)movie_destructor }, { "decodeByteArray", "([BII)Landroid/graphics/Movie;", (void*)movie_decodeByteArray }, }; diff --git a/graphics/java/android/graphics/Movie.java b/graphics/java/android/graphics/Movie.java index 95e9946..4a33453 100644 --- a/graphics/java/android/graphics/Movie.java +++ b/graphics/java/android/graphics/Movie.java @@ -46,6 +46,8 @@ public class Movie { public static native Movie decodeByteArray(byte[] data, int offset, int length); + private static native void nativeDestructor(int nativeMovie); + public static Movie decodeFile(String pathName) { InputStream is; try { @@ -57,6 +59,15 @@ public class Movie { return decodeTempStream(is); } + @Override + protected void finalize() throws Throwable { + try { + nativeDestructor(mNativeMovie); + } finally { + super.finalize(); + } + } + private static Movie decodeTempStream(InputStream is) { Movie moov = null; try { |