src/windows/native/sun/windows/awt_Cursor.cpp
Print this page
@@ -389,20 +389,13 @@
destroy_BMP(hMask);
}
DASSERT(hCursor);
- try {
AwtCursor::setPData(self, ptr_to_jlong(new AwtCursor(env, hCursor, self, xHotSpot,
yHotSpot, nW, nH, nSS, cols,
(BYTE *)andMaskPtr)));
- } catch (...) {
- if (cols) {
- delete[] cols;
- }
- throw;
- }
CATCH_BAD_ALLOC;
}
/*
* Class: sun_awt_windows_WCustomCursor
@@ -502,15 +495,15 @@
env->DeleteGlobalRef(((GlobalSetCursorStruct*)pStruct)->cursor);
}
/*
* Class: sun_awt_windows_WGlobalCursorManager
- * Method: setCursor
+ * Method: setCursorImpl
* Signature: (Ljava/awt/Component;Ljava/awt/Cursor;)V
*/
JNIEXPORT void JNICALL
-Java_sun_awt_windows_WGlobalCursorManager_setCursor(JNIEnv *env, jobject,
+Java_sun_awt_windows_WGlobalCursorManager_setCursorImpl(JNIEnv *env, jobject,
jobject, jobject cursor, jboolean u)
{
TRY;
if (cursor != NULL) { // fix for 4430302 - getCursor() returns NULL
@@ -523,10 +516,32 @@
} else {
JNU_ThrowNullPointerException(env, "NullPointerException");
}
CATCH_BAD_ALLOC;
}
+
+/*
+ * Class: sun_awt_windows_WGlobalCursorManager
+ * Method: setCursorDirect
+ * Signature: (Ljava/awt/Component;Ljava/awt/Cursor;)V
+ */
+JNIEXPORT void JNICALL
+Java_sun_awt_windows_WGlobalCursorManager_setCursorDirect(JNIEnv *env, jobject,
+ jobject, jobject cursor, jboolean u)
+{
+ TRY;
+
+ if (cursor != NULL) {
+ GlobalSetCursorStruct data;
+ data.cursor = env->NewGlobalRef(cursor);
+ data.u = u;
+ GlobalSetCursor((void *)&data);
+ } else {
+ JNU_ThrowNullPointerException(env, "NullPointerException");
+ }
+ CATCH_BAD_ALLOC;
+}
/*
* Class: sun_awt_windows_WGlobalCursorManager
* Method: findHeavyweight
* Signature: (II)Z