Update NDK methods for HARDWARE Bitmaps
Bug: 135133301 Test: I2c1e58c41e49c72fb4bdbc64989da103885d34bf _getInfo now sets a bit in AndroidBitmapInfo.flags to indicate whether the Bitmap has Config.HARDWARE. For a HARDWARE Bitmap, its AHardwareBuffer can now be retrieved with AndroidBitmap_getHardwareBuffer. Call AHardwareBuffer_acquire on the buffer so it will not be deleted while the client is using it. Change-Id: I9240c1928c1478053ecf7c252443a33dbd6fd6db
This commit is contained in:
@@ -76,6 +76,21 @@ int AndroidBitmap_unlockPixels(JNIEnv* env, jobject jbitmap) {
|
||||
return ANDROID_BITMAP_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
int AndroidBitmap_getHardwareBuffer(JNIEnv* env, jobject jbitmap, AHardwareBuffer** outBuffer) {
|
||||
if (NULL == env || NULL == jbitmap || NULL == outBuffer) {
|
||||
return ANDROID_BITMAP_RESULT_BAD_PARAMETER;
|
||||
}
|
||||
|
||||
android::graphics::Bitmap bitmap(env, jbitmap);
|
||||
|
||||
if (!bitmap.isValid()) {
|
||||
return ANDROID_BITMAP_RESULT_JNI_EXCEPTION;
|
||||
}
|
||||
|
||||
*outBuffer = bitmap.getHardwareBuffer();
|
||||
return *outBuffer == NULL ? ANDROID_BITMAP_RESULT_BAD_PARAMETER : ANDROID_BITMAP_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
int AndroidBitmap_compress(const AndroidBitmapInfo* info,
|
||||
int32_t dataSpace,
|
||||
const void* pixels,
|
||||
|
||||
@@ -22,6 +22,7 @@ LIBJNIGRAPHICS {
|
||||
AndroidBitmap_lockPixels;
|
||||
AndroidBitmap_unlockPixels;
|
||||
AndroidBitmap_compress; # introduced=30
|
||||
AndroidBitmap_getHardwareBuffer; #introduced=30
|
||||
local:
|
||||
*;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user