Loading core/jni/android_view_GraphicBuffer.cpp +4 −23 Original line number Diff line number Diff line Loading @@ -74,15 +74,10 @@ static struct { } gRectClassInfo; static struct { jfieldID mFinalizer; jfieldID mNativeCanvas; jfieldID mSurfaceFormat; jmethodID safeCanvasSwap; } gCanvasClassInfo; static struct { jfieldID mNativeCanvas; } gCanvasFinalizerClassInfo; #define GET_INT(object, field) \ env->GetIntField(object, field) Loading Loading @@ -146,15 +141,6 @@ static void android_view_GraphiceBuffer_destroy(JNIEnv* env, jobject clazz, // Canvas management // ---------------------------------------------------------------------------- static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) { jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer); SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>( GET_LONG(canvasObj, gCanvasClassInfo.mNativeCanvas)); SET_LONG(canvasObj, gCanvasClassInfo.mNativeCanvas, (long) newCanvas); SET_LONG(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (long) newCanvas); SkSafeUnref(previousCanvas); } static inline SkBitmap::Config convertPixelFormat(int32_t format) { switch (format) { case PIXEL_FORMAT_RGBA_8888: Loading Loading @@ -213,7 +199,7 @@ static jboolean android_view_GraphicBuffer_lockCanvas(JNIEnv* env, jobject, SET_INT(canvas, gCanvasClassInfo.mSurfaceFormat, buffer->getPixelFormat()); SkCanvas* nativeCanvas = SkNEW_ARGS(SkCanvas, (bitmap)); swapCanvasPtr(env, canvas, nativeCanvas); INVOKEV(canvas, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); SkRect clipRect; clipRect.set(rect.left, rect.top, rect.right, rect.bottom); Loading @@ -233,7 +219,7 @@ static jboolean android_view_GraphicBuffer_unlockCanvasAndPost(JNIEnv* env, jobj GraphicBufferWrapper* wrapper = reinterpret_cast<GraphicBufferWrapper*>(wrapperHandle); SkCanvas* nativeCanvas = SkNEW(SkCanvas); swapCanvasPtr(env, canvas, nativeCanvas); INVOKEV(canvas, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); if (wrapper) { status_t status = wrapper->buffer->unlock(); Loading Loading @@ -332,13 +318,8 @@ int register_android_view_GraphicBuffer(JNIEnv* env) { GET_FIELD_ID(gRectClassInfo.bottom, clazz, "bottom", "I"); FIND_CLASS(clazz, "android/graphics/Canvas"); GET_FIELD_ID(gCanvasClassInfo.mFinalizer, clazz, "mFinalizer", "Landroid/graphics/Canvas$CanvasFinalizer;"); GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J"); GET_FIELD_ID(gCanvasClassInfo.mSurfaceFormat, clazz, "mSurfaceFormat", "I"); FIND_CLASS(clazz, "android/graphics/Canvas$CanvasFinalizer"); GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J"); GET_METHOD_ID(gCanvasClassInfo.safeCanvasSwap, clazz, "safeCanvasSwap", "(JZ)V"); return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods)); } Loading core/jni/android_view_Surface.cpp +4 −22 Original line number Diff line number Diff line Loading @@ -69,15 +69,10 @@ static struct { } gRectClassInfo; static struct { jfieldID mFinalizer; jfieldID mNativeCanvas; jfieldID mSurfaceFormat; jmethodID safeCanvasSwap; } gCanvasClassInfo; static struct { jfieldID mNativeCanvas; } gCanvasFinalizerClassInfo; // ---------------------------------------------------------------------------- // this is just a pointer we use to pass to inc/decStrong Loading Loading @@ -191,15 +186,6 @@ static inline SkBitmap::Config convertPixelFormat(PixelFormat format) { } } static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) { jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer); SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>( env->GetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas)); env->SetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas, (jlong)newCanvas); env->SetLongField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (jlong)newCanvas); SkSafeUnref(previousCanvas); } static jlong nativeLockCanvas(JNIEnv* env, jclass clazz, jlong nativeObject, jobject canvasObj, jobject dirtyRectObj) { sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject)); Loading Loading @@ -247,7 +233,7 @@ static jlong nativeLockCanvas(JNIEnv* env, jclass clazz, } SkCanvas* nativeCanvas = SkNEW_ARGS(SkCanvas, (bitmap)); swapCanvasPtr(env, canvasObj, nativeCanvas); env->CallVoidMethod(canvasObj, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); if (dirtyRectPtr) { nativeCanvas->clipRect( SkRect::Make(reinterpret_cast<const SkIRect&>(dirtyRect)) ); Loading Loading @@ -277,7 +263,7 @@ static void nativeUnlockCanvasAndPost(JNIEnv* env, jclass clazz, // detach the canvas from the surface SkCanvas* nativeCanvas = SkNEW(SkCanvas); swapCanvasPtr(env, canvasObj, nativeCanvas); env->CallVoidMethod(canvasObj, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); // unlock surface status_t err = surface->unlockAndPost(); Loading Loading @@ -388,12 +374,8 @@ int register_android_view_Surface(JNIEnv* env) gSurfaceClassInfo.ctor = env->GetMethodID(gSurfaceClassInfo.clazz, "<init>", "(J)V"); clazz = env->FindClass("android/graphics/Canvas"); gCanvasClassInfo.mFinalizer = env->GetFieldID(clazz, "mFinalizer", "Landroid/graphics/Canvas$CanvasFinalizer;"); gCanvasClassInfo.mNativeCanvas = env->GetFieldID(clazz, "mNativeCanvas", "J"); gCanvasClassInfo.mSurfaceFormat = env->GetFieldID(clazz, "mSurfaceFormat", "I"); clazz = env->FindClass("android/graphics/Canvas$CanvasFinalizer"); gCanvasFinalizerClassInfo.mNativeCanvas = env->GetFieldID(clazz, "mNativeCanvas", "J"); gCanvasClassInfo.safeCanvasSwap = env->GetMethodID(clazz, "safeCanvasSwap", "(JZ)V"); clazz = env->FindClass("android/graphics/Rect"); gRectClassInfo.left = env->GetFieldID(clazz, "left", "I"); Loading core/jni/android_view_TextureView.cpp +4 −23 Original line number Diff line number Diff line Loading @@ -44,15 +44,10 @@ static struct { } gRectClassInfo; static struct { jfieldID mFinalizer; jfieldID mNativeCanvas; jfieldID mSurfaceFormat; jmethodID safeCanvasSwap; } gCanvasClassInfo; static struct { jfieldID mNativeCanvas; } gCanvasFinalizerClassInfo; static struct { jfieldID nativeWindow; } gTextureViewClassInfo; Loading Loading @@ -125,15 +120,6 @@ static void android_view_TextureView_destroyNativeWindow(JNIEnv* env, jobject te } } static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) { jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer); SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>( env->GetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas)); env->SetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas, (jlong)newCanvas); env->SetLongField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (jlong)newCanvas); SkSafeUnref(previousCanvas); } static jboolean android_view_TextureView_lockCanvas(JNIEnv* env, jobject, jlong nativeWindow, jobject canvas, jobject dirtyRect) { Loading Loading @@ -175,7 +161,7 @@ static jboolean android_view_TextureView_lockCanvas(JNIEnv* env, jobject, SET_INT(canvas, gCanvasClassInfo.mSurfaceFormat, buffer.format); SkCanvas* nativeCanvas = SkNEW_ARGS(SkCanvas, (bitmap)); swapCanvasPtr(env, canvas, nativeCanvas); INVOKEV(canvas, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); SkRect clipRect; clipRect.set(rect.left, rect.top, rect.right, rect.bottom); Loading @@ -193,7 +179,7 @@ static void android_view_TextureView_unlockCanvasAndPost(JNIEnv* env, jobject, jlong nativeWindow, jobject canvas) { SkCanvas* nativeCanvas = SkNEW(SkCanvas); swapCanvasPtr(env, canvas, nativeCanvas); INVOKEV(canvas, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); if (nativeWindow) { sp<ANativeWindow> window((ANativeWindow*) nativeWindow); Loading Loading @@ -241,13 +227,8 @@ int register_android_view_TextureView(JNIEnv* env) { GET_FIELD_ID(gRectClassInfo.bottom, clazz, "bottom", "I"); FIND_CLASS(clazz, "android/graphics/Canvas"); GET_FIELD_ID(gCanvasClassInfo.mFinalizer, clazz, "mFinalizer", "Landroid/graphics/Canvas$CanvasFinalizer;"); GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J"); GET_FIELD_ID(gCanvasClassInfo.mSurfaceFormat, clazz, "mSurfaceFormat", "I"); FIND_CLASS(clazz, "android/graphics/Canvas$CanvasFinalizer"); GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J"); GET_METHOD_ID(gCanvasClassInfo.safeCanvasSwap, clazz, "safeCanvasSwap", "(JZ)V"); FIND_CLASS(clazz, "android/view/TextureView"); GET_FIELD_ID(gTextureViewClassInfo.nativeWindow, clazz, "mNativeWindow", "J"); Loading graphics/java/android/graphics/Camera.java +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ public class Camera { getMatrix(mMatrix); canvas.concat(mMatrix); } else { nativeApplyToCanvas(canvas.mNativeCanvas); nativeApplyToCanvas(canvas.getNativeCanvas()); } } Loading graphics/java/android/graphics/Canvas.java +5 −1 Original line number Diff line number Diff line Loading @@ -39,8 +39,12 @@ import javax.microedition.khronos.opengles.GL; public class Canvas { // assigned in constructors or setBitmap, freed in finalizer private long mNativeCanvas; /** @hide */ public long mNativeCanvas; public long getNativeCanvas() { return mNativeCanvas; } // may be null private Bitmap mBitmap; Loading Loading
core/jni/android_view_GraphicBuffer.cpp +4 −23 Original line number Diff line number Diff line Loading @@ -74,15 +74,10 @@ static struct { } gRectClassInfo; static struct { jfieldID mFinalizer; jfieldID mNativeCanvas; jfieldID mSurfaceFormat; jmethodID safeCanvasSwap; } gCanvasClassInfo; static struct { jfieldID mNativeCanvas; } gCanvasFinalizerClassInfo; #define GET_INT(object, field) \ env->GetIntField(object, field) Loading Loading @@ -146,15 +141,6 @@ static void android_view_GraphiceBuffer_destroy(JNIEnv* env, jobject clazz, // Canvas management // ---------------------------------------------------------------------------- static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) { jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer); SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>( GET_LONG(canvasObj, gCanvasClassInfo.mNativeCanvas)); SET_LONG(canvasObj, gCanvasClassInfo.mNativeCanvas, (long) newCanvas); SET_LONG(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (long) newCanvas); SkSafeUnref(previousCanvas); } static inline SkBitmap::Config convertPixelFormat(int32_t format) { switch (format) { case PIXEL_FORMAT_RGBA_8888: Loading Loading @@ -213,7 +199,7 @@ static jboolean android_view_GraphicBuffer_lockCanvas(JNIEnv* env, jobject, SET_INT(canvas, gCanvasClassInfo.mSurfaceFormat, buffer->getPixelFormat()); SkCanvas* nativeCanvas = SkNEW_ARGS(SkCanvas, (bitmap)); swapCanvasPtr(env, canvas, nativeCanvas); INVOKEV(canvas, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); SkRect clipRect; clipRect.set(rect.left, rect.top, rect.right, rect.bottom); Loading @@ -233,7 +219,7 @@ static jboolean android_view_GraphicBuffer_unlockCanvasAndPost(JNIEnv* env, jobj GraphicBufferWrapper* wrapper = reinterpret_cast<GraphicBufferWrapper*>(wrapperHandle); SkCanvas* nativeCanvas = SkNEW(SkCanvas); swapCanvasPtr(env, canvas, nativeCanvas); INVOKEV(canvas, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); if (wrapper) { status_t status = wrapper->buffer->unlock(); Loading Loading @@ -332,13 +318,8 @@ int register_android_view_GraphicBuffer(JNIEnv* env) { GET_FIELD_ID(gRectClassInfo.bottom, clazz, "bottom", "I"); FIND_CLASS(clazz, "android/graphics/Canvas"); GET_FIELD_ID(gCanvasClassInfo.mFinalizer, clazz, "mFinalizer", "Landroid/graphics/Canvas$CanvasFinalizer;"); GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J"); GET_FIELD_ID(gCanvasClassInfo.mSurfaceFormat, clazz, "mSurfaceFormat", "I"); FIND_CLASS(clazz, "android/graphics/Canvas$CanvasFinalizer"); GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J"); GET_METHOD_ID(gCanvasClassInfo.safeCanvasSwap, clazz, "safeCanvasSwap", "(JZ)V"); return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods)); } Loading
core/jni/android_view_Surface.cpp +4 −22 Original line number Diff line number Diff line Loading @@ -69,15 +69,10 @@ static struct { } gRectClassInfo; static struct { jfieldID mFinalizer; jfieldID mNativeCanvas; jfieldID mSurfaceFormat; jmethodID safeCanvasSwap; } gCanvasClassInfo; static struct { jfieldID mNativeCanvas; } gCanvasFinalizerClassInfo; // ---------------------------------------------------------------------------- // this is just a pointer we use to pass to inc/decStrong Loading Loading @@ -191,15 +186,6 @@ static inline SkBitmap::Config convertPixelFormat(PixelFormat format) { } } static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) { jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer); SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>( env->GetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas)); env->SetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas, (jlong)newCanvas); env->SetLongField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (jlong)newCanvas); SkSafeUnref(previousCanvas); } static jlong nativeLockCanvas(JNIEnv* env, jclass clazz, jlong nativeObject, jobject canvasObj, jobject dirtyRectObj) { sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject)); Loading Loading @@ -247,7 +233,7 @@ static jlong nativeLockCanvas(JNIEnv* env, jclass clazz, } SkCanvas* nativeCanvas = SkNEW_ARGS(SkCanvas, (bitmap)); swapCanvasPtr(env, canvasObj, nativeCanvas); env->CallVoidMethod(canvasObj, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); if (dirtyRectPtr) { nativeCanvas->clipRect( SkRect::Make(reinterpret_cast<const SkIRect&>(dirtyRect)) ); Loading Loading @@ -277,7 +263,7 @@ static void nativeUnlockCanvasAndPost(JNIEnv* env, jclass clazz, // detach the canvas from the surface SkCanvas* nativeCanvas = SkNEW(SkCanvas); swapCanvasPtr(env, canvasObj, nativeCanvas); env->CallVoidMethod(canvasObj, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); // unlock surface status_t err = surface->unlockAndPost(); Loading Loading @@ -388,12 +374,8 @@ int register_android_view_Surface(JNIEnv* env) gSurfaceClassInfo.ctor = env->GetMethodID(gSurfaceClassInfo.clazz, "<init>", "(J)V"); clazz = env->FindClass("android/graphics/Canvas"); gCanvasClassInfo.mFinalizer = env->GetFieldID(clazz, "mFinalizer", "Landroid/graphics/Canvas$CanvasFinalizer;"); gCanvasClassInfo.mNativeCanvas = env->GetFieldID(clazz, "mNativeCanvas", "J"); gCanvasClassInfo.mSurfaceFormat = env->GetFieldID(clazz, "mSurfaceFormat", "I"); clazz = env->FindClass("android/graphics/Canvas$CanvasFinalizer"); gCanvasFinalizerClassInfo.mNativeCanvas = env->GetFieldID(clazz, "mNativeCanvas", "J"); gCanvasClassInfo.safeCanvasSwap = env->GetMethodID(clazz, "safeCanvasSwap", "(JZ)V"); clazz = env->FindClass("android/graphics/Rect"); gRectClassInfo.left = env->GetFieldID(clazz, "left", "I"); Loading
core/jni/android_view_TextureView.cpp +4 −23 Original line number Diff line number Diff line Loading @@ -44,15 +44,10 @@ static struct { } gRectClassInfo; static struct { jfieldID mFinalizer; jfieldID mNativeCanvas; jfieldID mSurfaceFormat; jmethodID safeCanvasSwap; } gCanvasClassInfo; static struct { jfieldID mNativeCanvas; } gCanvasFinalizerClassInfo; static struct { jfieldID nativeWindow; } gTextureViewClassInfo; Loading Loading @@ -125,15 +120,6 @@ static void android_view_TextureView_destroyNativeWindow(JNIEnv* env, jobject te } } static inline void swapCanvasPtr(JNIEnv* env, jobject canvasObj, SkCanvas* newCanvas) { jobject canvasFinalizerObj = env->GetObjectField(canvasObj, gCanvasClassInfo.mFinalizer); SkCanvas* previousCanvas = reinterpret_cast<SkCanvas*>( env->GetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas)); env->SetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas, (jlong)newCanvas); env->SetLongField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (jlong)newCanvas); SkSafeUnref(previousCanvas); } static jboolean android_view_TextureView_lockCanvas(JNIEnv* env, jobject, jlong nativeWindow, jobject canvas, jobject dirtyRect) { Loading Loading @@ -175,7 +161,7 @@ static jboolean android_view_TextureView_lockCanvas(JNIEnv* env, jobject, SET_INT(canvas, gCanvasClassInfo.mSurfaceFormat, buffer.format); SkCanvas* nativeCanvas = SkNEW_ARGS(SkCanvas, (bitmap)); swapCanvasPtr(env, canvas, nativeCanvas); INVOKEV(canvas, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); SkRect clipRect; clipRect.set(rect.left, rect.top, rect.right, rect.bottom); Loading @@ -193,7 +179,7 @@ static void android_view_TextureView_unlockCanvasAndPost(JNIEnv* env, jobject, jlong nativeWindow, jobject canvas) { SkCanvas* nativeCanvas = SkNEW(SkCanvas); swapCanvasPtr(env, canvas, nativeCanvas); INVOKEV(canvas, gCanvasClassInfo.safeCanvasSwap, (jlong)nativeCanvas, false); if (nativeWindow) { sp<ANativeWindow> window((ANativeWindow*) nativeWindow); Loading Loading @@ -241,13 +227,8 @@ int register_android_view_TextureView(JNIEnv* env) { GET_FIELD_ID(gRectClassInfo.bottom, clazz, "bottom", "I"); FIND_CLASS(clazz, "android/graphics/Canvas"); GET_FIELD_ID(gCanvasClassInfo.mFinalizer, clazz, "mFinalizer", "Landroid/graphics/Canvas$CanvasFinalizer;"); GET_FIELD_ID(gCanvasClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J"); GET_FIELD_ID(gCanvasClassInfo.mSurfaceFormat, clazz, "mSurfaceFormat", "I"); FIND_CLASS(clazz, "android/graphics/Canvas$CanvasFinalizer"); GET_FIELD_ID(gCanvasFinalizerClassInfo.mNativeCanvas, clazz, "mNativeCanvas", "J"); GET_METHOD_ID(gCanvasClassInfo.safeCanvasSwap, clazz, "safeCanvasSwap", "(JZ)V"); FIND_CLASS(clazz, "android/view/TextureView"); GET_FIELD_ID(gTextureViewClassInfo.nativeWindow, clazz, "mNativeWindow", "J"); Loading
graphics/java/android/graphics/Camera.java +1 −1 Original line number Diff line number Diff line Loading @@ -154,7 +154,7 @@ public class Camera { getMatrix(mMatrix); canvas.concat(mMatrix); } else { nativeApplyToCanvas(canvas.mNativeCanvas); nativeApplyToCanvas(canvas.getNativeCanvas()); } } Loading
graphics/java/android/graphics/Canvas.java +5 −1 Original line number Diff line number Diff line Loading @@ -39,8 +39,12 @@ import javax.microedition.khronos.opengles.GL; public class Canvas { // assigned in constructors or setBitmap, freed in finalizer private long mNativeCanvas; /** @hide */ public long mNativeCanvas; public long getNativeCanvas() { return mNativeCanvas; } // may be null private Bitmap mBitmap; Loading