diff options
author | Alexey Ushakov <Alexey.Ushakov@jetbrains.com> | 2018-03-19 15:01:44 +0300 |
---|---|---|
committer | Alexey Ushakov <Alexey.Ushakov@jetbrains.com> | 2018-03-19 15:02:56 +0300 |
commit | 2861386c34127be16e4ab0d0b3e6e826e4707cc7 (patch) | |
tree | 57c97687168beb2dbda9b378393274c778871c3c /src/macosx | |
parent | a2452d94764f42bc628028db7c53dacfc5055fe6 (diff) | |
download | jdk8u_jdk-2861386c34127be16e4ab0d0b3e6e826e4707cc7.tar.gz |
JRE-690 Recent bundled JDK VCS Log UI slowdownsjb8u152-b1204
Optimized nativeGetCursorPosition to avoid creating temporary Point2D object
Diffstat (limited to 'src/macosx')
-rw-r--r-- | src/macosx/classes/sun/lwawt/macosx/CCursorManager.java | 8 | ||||
-rw-r--r-- | src/macosx/native/sun/awt/CCursorManager.m | 14 |
2 files changed, 11 insertions, 11 deletions
diff --git a/src/macosx/classes/sun/lwawt/macosx/CCursorManager.java b/src/macosx/classes/sun/lwawt/macosx/CCursorManager.java index e4abc5fe1a..228989920b 100644 --- a/src/macosx/classes/sun/lwawt/macosx/CCursorManager.java +++ b/src/macosx/classes/sun/lwawt/macosx/CCursorManager.java @@ -29,11 +29,10 @@ import sun.lwawt.LWCursorManager; import java.awt.Cursor; import java.awt.Point; -import java.awt.geom.Point2D; final class CCursorManager extends LWCursorManager { - private static native Point2D nativeGetCursorPosition(); + private static native void nativeGetCursorPosition(int[] pos); private static native void nativeSetBuiltInCursor(final int type, final String name); private static native void nativeSetCustomCursor(final long imgPtr, final double x, final double y); public static native void nativeSetAllowsCursorSetInBackground(final boolean allows); @@ -51,8 +50,9 @@ final class CCursorManager extends LWCursorManager { @Override protected Point getCursorPosition() { - final Point2D nativePosition = nativeGetCursorPosition(); - return new Point((int)nativePosition.getX(), (int)nativePosition.getY()); + final int [] pos = new int[2]; + nativeGetCursorPosition(pos); + return new Point(pos[0], pos[1]); } @Override diff --git a/src/macosx/native/sun/awt/CCursorManager.m b/src/macosx/native/sun/awt/CCursorManager.m index 9581b932ad..732f7ed06d 100644 --- a/src/macosx/native/sun/awt/CCursorManager.m +++ b/src/macosx/native/sun/awt/CCursorManager.m @@ -110,23 +110,23 @@ JNF_COCOA_ENTER(env); JNF_COCOA_EXIT(env); } -JNIEXPORT jobject JNICALL +JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CCursorManager_nativeGetCursorPosition -(JNIEnv *env, jclass class) +(JNIEnv *env, jclass class, jintArray jPos) { - jobject jpt = NULL; + jint *pos = (*env)->GetPrimitiveArrayCritical(env, jPos, 0); + if (pos == NULL) return; JNF_COCOA_ENTER(env); CGEventRef event = CGEventCreate(NULL); CGPoint globalPos = CGEventGetLocation(event); CFRelease(event); - - jpt = NSToJavaPoint(env, globalPos); + pos[0] = (jint)globalPos.x; + pos[1] = (jint)globalPos.y; JNF_COCOA_EXIT(env); - - return jpt; + (*env)->ReleasePrimitiveArrayCritical(env, jPos, pos, 0); } |