summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorConley Owens <cco3@android.com>2011-04-29 17:15:09 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-04-29 17:15:09 -0700
commit1eb31b434fdc325c55b65ecf1783c63b2fdfa669 (patch)
treed75fabb2e44aee1ca5ef90e12945102aeea34fc7
parent64248af314593fe8ffed57ac9a0f43dede26bfc2 (diff)
parent718516f3b73468c480ef8d2283a1c80a6223658d (diff)
downloadframeworks_base-1eb31b434fdc325c55b65ecf1783c63b2fdfa669.zip
frameworks_base-1eb31b434fdc325c55b65ecf1783c63b2fdfa669.tar.gz
frameworks_base-1eb31b434fdc325c55b65ecf1783c63b2fdfa669.tar.bz2
am 718516f3: am 9fd8e057: Merge "Fix memory leak of SkMovie class"
* commit '718516f3b73468c480ef8d2283a1c80a6223658d': Fix memory leak of SkMovie class
-rw-r--r--core/jni/android/graphics/Movie.cpp5
-rw-r--r--graphics/java/android/graphics/Movie.java11
2 files changed, 16 insertions, 0 deletions
diff --git a/core/jni/android/graphics/Movie.cpp b/core/jni/android/graphics/Movie.cpp
index de18f9f..d1a5546 100644
--- a/core/jni/android/graphics/Movie.cpp
+++ b/core/jni/android/graphics/Movie.cpp
@@ -115,6 +115,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>
@@ -129,6 +133,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 {