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