diff options
author | Sven Gothel <[email protected]> | 2014-01-05 18:12:43 +0100 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-01-05 18:12:43 +0100 |
commit | 69b5adb37a191e746fa55e495c2d02a942833899 (patch) | |
tree | 46e21932e0c5c788f8b1e91c33270ec1ed88cbb5 /src/newt/native | |
parent | 20b242387e6c329a2ba6261d39a05ffe9c39c6ab (diff) |
NEWT OSX: Add missing NewtCommon_init(env) (duh!) - Issuing NewtCommon_throwNewRuntimeException(..) if given references are of invalid type
Missing NewtCommon_init(env) always lead to a crash when calling NewtCommon_throwNewRuntimeException(..)
due to uninitialized clazz instances!
Diffstat (limited to 'src/newt/native')
-rw-r--r-- | src/newt/native/MacWindow.m | 59 |
1 files changed, 28 insertions, 31 deletions
diff --git a/src/newt/native/MacWindow.m b/src/newt/native/MacWindow.m index eb5913706..359b67b39 100644 --- a/src/newt/native/MacWindow.m +++ b/src/newt/native/MacWindow.m @@ -210,6 +210,8 @@ JNIEXPORT jboolean JNICALL Java_jogamp_newt_driver_macosx_DisplayDriver_initNSAp if(initialized) return JNI_TRUE; initialized = 1; + NewtCommon_init(env); + // This little bit of magic is needed in order to receive mouse // motion events and allow key focus to be properly transferred. // FIXME: are these Carbon APIs? They come from the @@ -349,7 +351,7 @@ JNIEXPORT void JNICALL Java_jogamp_newt_driver_macosx_DisplayDriver_destroyPoint { NSCursor * c = (NSCursor*) (intptr_t) handle ; if( NULL != c && NO == [c isKindOfClass:[NSCursor class]] ) { - DBG_PRINT( "Not a NSCursor %p\n", c); + NewtCommon_throwNewRuntimeException(env, "Not a NSCursor %p", c); return; } DBG_PRINT( "destroyPointerIcon0 %p\n", c); @@ -960,7 +962,7 @@ JNIEXPORT void JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_close0 NSWindow *pWin = [mWin parentWindow]; DBG_PRINT( "windowClose.0 - %p [isNSWindow %d, isNewtWin %d], parent %p\n", mWin, isNSWin, isNewtWin, pWin); if( !isNewtWin ) { - DBG_PRINT( "windowClose.0 - Not a NEWT win - abort\n"); + NewtCommon_throwNewRuntimeException(env, "Not a NewtMacWindow %p", mWin); return; } NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; @@ -1316,38 +1318,36 @@ JNIEXPORT void JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_setAlwaysOnTo JNIEXPORT jobject JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_getLocationOnScreen0 (JNIEnv *env, jclass unused, jlong win, jint src_x, jint src_y) { - NSObject *nsObj = (NSObject*) ((intptr_t) win); - NewtMacWindow * mWin = (NewtMacWindow*) nsObj; + NewtMacWindow *mWin = (NewtMacWindow*) (intptr_t) win; if( ![mWin isKindOfClass:[NewtMacWindow class]] ) { - DBG_PRINT("Not a NewtMacWindow %p\n", nsObj); + NewtCommon_throwNewRuntimeException(env, "Not a NewtMacWindow %p", mWin); return NULL; } NSPoint p0 = [mWin getLocationOnScreen: NSMakePoint(src_x, src_y)]; return (*env)->NewObject(env, pointClz, pointCstr, (jint)p0.x, (jint)p0.y); } -JNIEXPORT jboolean JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_setPointerIcon0 +JNIEXPORT void JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_setPointerIcon0 (JNIEnv *env, jobject unused, jlong window, jlong handle) { NSCursor *c = (NSCursor*) (intptr_t) handle ; if ( NULL != c && NO == [c isKindOfClass:[NSCursor class]] ) { - DBG_PRINT("Not a NSCursor %p\n", c); - return JNI_FALSE; + NewtCommon_throwNewRuntimeException(env, "Not a NSCursor %p", c); + return; } NewtMacWindow *mWin = (NewtMacWindow*) (intptr_t) window; if( ! [mWin isKindOfClass:[NewtMacWindow class]] ) { - DBG_PRINT("Not a NewtMacWindow %p\n", mWin); - return JNI_FALSE; + NewtCommon_throwNewRuntimeException(env, "Not a NewtMacWindow %p", mWin); + return; } NewtView* nView = (NewtView *) [mWin contentView]; if( ! [nView isKindOfClass:[NewtView class]] ) { - DBG_PRINT("Not a NewtView %p\n", nView); - return JNI_FALSE; + NewtCommon_throwNewRuntimeException(env, "Not a NewtView %p", nView); + return; } NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; [nView setPointerIcon: c]; [pool release]; - return JNI_TRUE; } /* @@ -1355,24 +1355,23 @@ JNIEXPORT jboolean JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_setPointe * Method: setPointerVisible0 * Signature: (JZ)Z */ -JNIEXPORT jboolean JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_setPointerVisible0 +JNIEXPORT void JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_setPointerVisible0 (JNIEnv *env, jclass clazz, jlong window, jboolean hasFocus, jboolean mouseVisible) { NewtMacWindow *mWin = (NewtMacWindow*) ((intptr_t) window); if( ! [mWin isKindOfClass:[NewtMacWindow class]] ) { - DBG_PRINT("Not a NewtMacWindow %p\n", mWin); - return JNI_FALSE; + NewtCommon_throwNewRuntimeException(env, "Not a NewtMacWindow %p", mWin); + return; } NewtView* nView = (NewtView *) [mWin contentView]; if( ! [nView isKindOfClass:[NewtView class]] ) { - DBG_PRINT("Not a NewtView %p\n", nView); - return JNI_FALSE; + NewtCommon_throwNewRuntimeException(env, "Not a NewtView %p", nView); + return; } NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; [nView setMouseVisible: ( JNI_TRUE == mouseVisible ) ? YES : NO hasFocus: ( JNI_TRUE == hasFocus ) ? YES : NO]; [pool release]; - return JNI_TRUE; } /* @@ -1380,23 +1379,22 @@ JNIEXPORT jboolean JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_setPointe * Method: confinePointer0 * Signature: (JZ)Z */ -JNIEXPORT jboolean JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_confinePointer0 +JNIEXPORT void JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_confinePointer0 (JNIEnv *env, jclass clazz, jlong window, jboolean confine) { NewtMacWindow *mWin = (NewtMacWindow*) ((intptr_t) window); if( ! [mWin isKindOfClass:[NewtMacWindow class]] ) { - DBG_PRINT("Not a NewtMacWindow %p\n", mWin); - return JNI_FALSE; + NewtCommon_throwNewRuntimeException(env, "Not a NewtMacWindow %p", mWin); + return; } NewtView* nView = (NewtView *) [mWin contentView]; if( ! [nView isKindOfClass:[NewtView class]] ) { - DBG_PRINT("Not a NewtView %p\n", nView); - return JNI_FALSE; + NewtCommon_throwNewRuntimeException(env, "Not a NewtView %p", nView); + return; } NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; [nView setMouseConfined: ( JNI_TRUE == confine ) ? YES : NO]; [pool release]; - return JNI_TRUE; } /* @@ -1404,22 +1402,21 @@ JNIEXPORT jboolean JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_confinePo * Method: warpPointer0 * Signature: (JJII)V */ -JNIEXPORT jboolean JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_warpPointer0 +JNIEXPORT void JNICALL Java_jogamp_newt_driver_macosx_WindowDriver_warpPointer0 (JNIEnv *env, jclass clazz, jlong window, jint x, jint y) { NewtMacWindow *mWin = (NewtMacWindow*) ((intptr_t) window); if( ! [mWin isKindOfClass:[NewtMacWindow class]] ) { - DBG_PRINT("Not a NewtMacWindow %p\n", mWin); - return JNI_FALSE; + NewtCommon_throwNewRuntimeException(env, "Not a NewtMacWindow %p", mWin); + return; } NewtView* nView = (NewtView *) [mWin contentView]; if( ! [nView isKindOfClass:[NewtView class]] ) { - DBG_PRINT("Not a NewtView %p\n", nView); - return JNI_FALSE; + NewtCommon_throwNewRuntimeException(env, "Not a NewtView %p", nView); + return; } NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init]; [nView setMousePosition: [mWin newtRelClientTLWinPos2AbsBLScreenPos: NSMakePoint(x, y)]]; [pool release]; - return JNI_TRUE; } |