OSDN Git Service

Set flags in RS JNI calls for rsObj creation
authorYang Ni <yangni@google.com>
Thu, 7 Jan 2016 22:57:16 +0000 (14:57 -0800)
committerYang Ni <yangni@google.com>
Mon, 22 Feb 2016 19:38:54 +0000 (11:38 -0800)
Bug: 25570907

Added a flag to all RS runtime API for rsObj creation to indicate a
call is from Java. This flag will help us avoid incrementing the user
ref count for rsObj's created from Single-Source RS, and therefore
avoid memory leaks for such objects.

Change-Id: Id3604f93b166089e3aca896d1c6c509b3ea19bcf

rs/jni/android_renderscript_RenderScript.cpp

index 3bef19e..316e530 100644 (file)
@@ -1061,7 +1061,7 @@ nElementCreate(JNIEnv *_env, jobject _this, jlong con, jlong type, jint kind, jb
               type, kind, norm, size);
     }
     return (jlong)(uintptr_t)rsElementCreate((RsContext)con, (RsDataType)type, (RsDataKind)kind,
-                                             norm, size);
+                                             norm, size, true);
 }
 
 static jlong
@@ -1100,7 +1100,7 @@ nElementCreate2(JNIEnv *_env, jobject _this, jlong con,
     jlong id = (jlong)(uintptr_t)rsElementCreate2((RsContext)con,
                                      (const RsElement *)ids, fieldCount,
                                      nameArray, fieldCount * sizeof(size_t),  sizeArray,
-                                     (const uint32_t *)arraySizes, fieldCount);
+                                     (const uint32_t *)arraySizes, fieldCount, true);
 
     free(ids);
     free(arraySizes);
@@ -1174,7 +1174,7 @@ nTypeCreate(JNIEnv *_env, jobject _this, jlong con, jlong eid,
     }
 
     return (jlong)(uintptr_t)rsTypeCreate((RsContext)con, (RsElement)eid, dimx, dimy, dimz, mips,
-                                          faces, yuv);
+                                          faces, yuv, true);
 }
 
 static void
@@ -1210,7 +1210,7 @@ nAllocationCreateTyped(JNIEnv *_env, jobject _this, jlong con, jlong type, jint
     }
     return (jlong)(uintptr_t) rsAllocationCreateTyped((RsContext)con, (RsType)type,
                                                       (RsAllocationMipmapControl)mips,
-                                                      (uint32_t)usage, (uintptr_t)pointer);
+                                                      (uint32_t)usage, (uintptr_t)pointer, true);
 }
 
 static void
@@ -1315,7 +1315,7 @@ nAllocationCreateFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong type,
     const void* ptr = bitmap.getPixels();
     jlong id = (jlong)(uintptr_t)rsAllocationCreateFromBitmap((RsContext)con,
                                                   (RsType)type, (RsAllocationMipmapControl)mip,
-                                                  ptr, bitmap.getSize(), usage);
+                                                  ptr, bitmap.getSize(), usage, true);
     bitmap.unlockPixels();
     return id;
 }
@@ -1331,7 +1331,7 @@ nAllocationCreateBitmapBackedAllocation(JNIEnv *_env, jobject _this, jlong con,
     const void* ptr = bitmap.getPixels();
     jlong id = (jlong)(uintptr_t)rsAllocationCreateTyped((RsContext)con,
                                             (RsType)type, (RsAllocationMipmapControl)mip,
-                                            (uint32_t)usage, (uintptr_t)ptr);
+                                            (uint32_t)usage, (uintptr_t)ptr, true);
     bitmap.unlockPixels();
     return id;
 }
@@ -1347,7 +1347,7 @@ nAllocationCubeCreateFromBitmap(JNIEnv *_env, jobject _this, jlong con, jlong ty
     const void* ptr = bitmap.getPixels();
     jlong id = (jlong)(uintptr_t)rsAllocationCubeCreateFromBitmap((RsContext)con,
                                                       (RsType)type, (RsAllocationMipmapControl)mip,
-                                                      ptr, bitmap.getSize(), usage);
+                                                      ptr, bitmap.getSize(), usage, true);
     bitmap.unlockPixels();
     return id;
 }