aboutsummaryrefslogtreecommitdiff
path: root/src/macosx
diff options
context:
space:
mode:
authorAlexey Ushakov <Alexey.Ushakov@jetbrains.com>2018-03-19 15:01:44 +0300
committerAlexey Ushakov <Alexey.Ushakov@jetbrains.com>2018-03-19 15:02:56 +0300
commit2861386c34127be16e4ab0d0b3e6e826e4707cc7 (patch)
tree57c97687168beb2dbda9b378393274c778871c3c /src/macosx
parenta2452d94764f42bc628028db7c53dacfc5055fe6 (diff)
downloadjdk8u_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.java8
-rw-r--r--src/macosx/native/sun/awt/CCursorManager.m14
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);
}