diff options
author | Ashok Bhat <ashok.bhat@arm.com> | 2014-01-20 20:08:01 +0000 |
---|---|---|
committer | Narayan Kamath <narayan@google.com> | 2014-01-28 10:02:43 +0000 |
commit | 36bef0bf30d6bae48cf3837df351075ca4fce654 (patch) | |
tree | 9b4ac2bcd764da7526d309e0341be30ab63c9f1d /core/jni/android_view_Surface.cpp | |
parent | 729b12c7a91f9caa65af77197cf6a8814a5a2051 (diff) | |
download | frameworks_base-36bef0bf30d6bae48cf3837df351075ca4fce654.zip frameworks_base-36bef0bf30d6bae48cf3837df351075ca4fce654.tar.gz frameworks_base-36bef0bf30d6bae48cf3837df351075ca4fce654.tar.bz2 |
AArch64: Make graphics classes 64-bit compatible
This a merger of two commits submitted to AOSP by
the following authors:
ashok.bhat@arm.com, david.butcher@arm.coma
craig.barber@arm.com, kevin.petit@arm.com and
marcus.oakland@arm.com
Due to the very large number of internal conflicts, I
have chosen to cherry-pick this change instead
of letting it merge through AOSP because the merge
conflict resolution would be very hard to review.
Commit messages below:
================================================
AArch64: Make graphics classes 64-bit compatible
Changes in this patch include
[x] Long is used to store native pointers as they can
be 64-bit.
[x] Some minor changes have been done to conform with
standard JNI practice (e.g. use of jint instead of int
in JNI function prototypes)
[x] AssetAtlasManager is not completely 64-bit compatible
yet. Specifically mAtlasMap member has to be converted
to hold native pointer using long. Added a TODO to
AssetAtlasManager.java to indicate the change required.
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Craig Barber <craig.barber@arm.com>
Signed-off-by: Kévin PETIT <kevin.petit@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
==================================================================
AArch64: Use long for pointers in graphics/Camera
For storing pointers, long is used in
android/graphics/Camera class, as native
pointers can be 64-bit.
In addition, some minor changes have been done
to conform with standard JNI practice (e.g. use of
jint instead of int in JNI function prototypes)
Signed-off-by: Ashok Bhat <ashok.bhat@arm.com>
Signed-off-by: Marcus Oakland <marcus.oakland@arm.com>
===================================================================
Change-Id: Id5793fa0ebc17ee8b1eecf4b3f327977fdccff71
Diffstat (limited to 'core/jni/android_view_Surface.cpp')
-rw-r--r-- | core/jni/android_view_Surface.cpp | 68 |
1 files changed, 34 insertions, 34 deletions
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp index dd178d8..19ee8a6 100644 --- a/core/jni/android_view_Surface.cpp +++ b/core/jni/android_view_Surface.cpp @@ -97,7 +97,7 @@ sp<Surface> android_view_Surface_getSurface(JNIEnv* env, jobject surfaceObj) { gSurfaceClassInfo.mLock); if (env->MonitorEnter(lock) == JNI_OK) { sur = reinterpret_cast<Surface *>( - env->GetIntField(surfaceObj, gSurfaceClassInfo.mNativeObject)); + env->GetLongField(surfaceObj, gSurfaceClassInfo.mNativeObject)); env->MonitorExit(lock); } return sur; @@ -135,7 +135,7 @@ static inline bool isSurfaceValid(const sp<Surface>& sur) { // ---------------------------------------------------------------------------- -static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jclass clazz, +static jlong nativeCreateFromSurfaceTexture(JNIEnv* env, jclass clazz, jobject surfaceTextureObj) { sp<IGraphicBufferProducer> producer(SurfaceTexture_getProducer(env, surfaceTextureObj)); if (producer == NULL) { @@ -151,20 +151,20 @@ static jint nativeCreateFromSurfaceTexture(JNIEnv* env, jclass clazz, } surface->incStrong(&sRefBaseOwner); - return int(surface.get()); + return jlong(surface.get()); } -static void nativeRelease(JNIEnv* env, jclass clazz, jint nativeObject) { +static void nativeRelease(JNIEnv* env, jclass clazz, jlong nativeObject) { sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject)); sur->decStrong(&sRefBaseOwner); } -static jboolean nativeIsValid(JNIEnv* env, jclass clazz, jint nativeObject) { +static jboolean nativeIsValid(JNIEnv* env, jclass clazz, jlong nativeObject) { sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject)); return isSurfaceValid(sur) ? JNI_TRUE : JNI_FALSE; } -static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jclass clazz, jint nativeObject) { +static jboolean nativeIsConsumerRunningBehind(JNIEnv* env, jclass clazz, jlong nativeObject) { sp<Surface> sur(reinterpret_cast<Surface *>(nativeObject)); if (!isSurfaceValid(sur)) { doThrowIAE(env); @@ -193,14 +193,14 @@ 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->GetIntField(canvasObj, gCanvasClassInfo.mNativeCanvas)); - env->SetIntField(canvasObj, gCanvasClassInfo.mNativeCanvas, (int)newCanvas); - env->SetIntField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (int)newCanvas); + env->GetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas)); + env->SetLongField(canvasObj, gCanvasClassInfo.mNativeCanvas, (jlong)newCanvas); + env->SetLongField(canvasFinalizerObj, gCanvasFinalizerClassInfo.mNativeCanvas, (jlong)newCanvas); SkSafeUnref(previousCanvas); } -static jint nativeLockCanvas(JNIEnv* env, jclass clazz, - jint nativeObject, jobject canvasObj, jobject dirtyRectObj) { +static jlong nativeLockCanvas(JNIEnv* env, jclass clazz, + jlong nativeObject, jobject canvasObj, jobject dirtyRectObj) { sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject)); if (!isSurfaceValid(surface)) { @@ -264,11 +264,11 @@ static jint nativeLockCanvas(JNIEnv* env, jclass clazz, // because the latter could be replaced while the surface is locked. sp<Surface> lockedSurface(surface); lockedSurface->incStrong(&sRefBaseOwner); - return (int) lockedSurface.get(); + return (jlong) lockedSurface.get(); } static void nativeUnlockCanvasAndPost(JNIEnv* env, jclass clazz, - jint nativeObject, jobject canvasObj) { + jlong nativeObject, jobject canvasObj) { sp<Surface> surface(reinterpret_cast<Surface *>(nativeObject)); if (!isSurfaceValid(surface)) { return; @@ -287,8 +287,8 @@ static void nativeUnlockCanvasAndPost(JNIEnv* env, jclass clazz, // ---------------------------------------------------------------------------- -static jint nativeCreateFromSurfaceControl(JNIEnv* env, jclass clazz, - jint surfaceControlNativeObj) { +static jlong nativeCreateFromSurfaceControl(JNIEnv* env, jclass clazz, + jlong surfaceControlNativeObj) { /* * This is used by the WindowManagerService just after constructing * a Surface and is necessary for returning the Surface reference to @@ -300,11 +300,11 @@ static jint nativeCreateFromSurfaceControl(JNIEnv* env, jclass clazz, if (surface != NULL) { surface->incStrong(&sRefBaseOwner); } - return reinterpret_cast<jint>(surface.get()); + return reinterpret_cast<jlong>(surface.get()); } -static jint nativeReadFromParcel(JNIEnv* env, jclass clazz, - jint nativeObject, jobject parcelObj) { +static jlong nativeReadFromParcel(JNIEnv* env, jclass clazz, + jlong nativeObject, jobject parcelObj) { Parcel* parcel = parcelForJavaObject(env, parcelObj); if (parcel == NULL) { doThrowNPE(env); @@ -319,7 +319,7 @@ static jint nativeReadFromParcel(JNIEnv* env, jclass clazz, if (self != NULL && (self->getIGraphicBufferProducer()->asBinder() == binder)) { // same IGraphicBufferProducer, return ourselves - return int(self.get()); + return jlong(self.get()); } sp<Surface> sur; @@ -336,11 +336,11 @@ static jint nativeReadFromParcel(JNIEnv* env, jclass clazz, self->decStrong(&sRefBaseOwner); } - return int(sur.get()); + return jlong(sur.get()); } static void nativeWriteToParcel(JNIEnv* env, jclass clazz, - jint nativeObject, jobject parcelObj) { + jlong nativeObject, jobject parcelObj) { Parcel* parcel = parcelForJavaObject(env, parcelObj); if (parcel == NULL) { doThrowNPE(env); @@ -353,23 +353,23 @@ static void nativeWriteToParcel(JNIEnv* env, jclass clazz, // ---------------------------------------------------------------------------- static JNINativeMethod gSurfaceMethods[] = { - {"nativeCreateFromSurfaceTexture", "(Landroid/graphics/SurfaceTexture;)I", + {"nativeCreateFromSurfaceTexture", "(Landroid/graphics/SurfaceTexture;)J", (void*)nativeCreateFromSurfaceTexture }, - {"nativeRelease", "(I)V", + {"nativeRelease", "(J)V", (void*)nativeRelease }, - {"nativeIsValid", "(I)Z", + {"nativeIsValid", "(J)Z", (void*)nativeIsValid }, - {"nativeIsConsumerRunningBehind", "(I)Z", + {"nativeIsConsumerRunningBehind", "(J)Z", (void*)nativeIsConsumerRunningBehind }, - {"nativeLockCanvas", "(ILandroid/graphics/Canvas;Landroid/graphics/Rect;)I", + {"nativeLockCanvas", "(JLandroid/graphics/Canvas;Landroid/graphics/Rect;)J", (void*)nativeLockCanvas }, - {"nativeUnlockCanvasAndPost", "(ILandroid/graphics/Canvas;)V", + {"nativeUnlockCanvasAndPost", "(JLandroid/graphics/Canvas;)V", (void*)nativeUnlockCanvasAndPost }, - {"nativeCreateFromSurfaceControl", "(I)I", + {"nativeCreateFromSurfaceControl", "(J)J", (void*)nativeCreateFromSurfaceControl }, - {"nativeReadFromParcel", "(ILandroid/os/Parcel;)I", + {"nativeReadFromParcel", "(JLandroid/os/Parcel;)J", (void*)nativeReadFromParcel }, - {"nativeWriteToParcel", "(ILandroid/os/Parcel;)V", + {"nativeWriteToParcel", "(JLandroid/os/Parcel;)V", (void*)nativeWriteToParcel }, }; @@ -381,18 +381,18 @@ int register_android_view_Surface(JNIEnv* env) jclass clazz = env->FindClass("android/view/Surface"); gSurfaceClassInfo.clazz = jclass(env->NewGlobalRef(clazz)); gSurfaceClassInfo.mNativeObject = - env->GetFieldID(gSurfaceClassInfo.clazz, "mNativeObject", "I"); + env->GetFieldID(gSurfaceClassInfo.clazz, "mNativeObject", "J"); gSurfaceClassInfo.mLock = env->GetFieldID(gSurfaceClassInfo.clazz, "mLock", "Ljava/lang/Object;"); - gSurfaceClassInfo.ctor = env->GetMethodID(gSurfaceClassInfo.clazz, "<init>", "(I)V"); + 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", "I"); + 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", "I"); + gCanvasFinalizerClassInfo.mNativeCanvas = env->GetFieldID(clazz, "mNativeCanvas", "J"); clazz = env->FindClass("android/graphics/Rect"); gRectClassInfo.left = env->GetFieldID(clazz, "left", "I"); |