7179050: [macosx] Make LWAWT be able to run on AppKit thread
Removed irrelevant assertions from the LWAWT native methods Reviewed-by: serb, anthony
This commit is contained in:
parent
04fc62c5ed
commit
db0f450d53
@ -58,7 +58,6 @@ public final class CPlatformWindow extends CFRetainedResource implements Platfor
|
||||
private static native void nativeRevalidateNSWindowShadow(long nsWindowPtr);
|
||||
private static native void nativeSetNSWindowMinimizedIcon(long nsWindowPtr, long nsImage);
|
||||
private static native void nativeSetNSWindowRepresentedFilename(long nsWindowPtr, String representedFilename);
|
||||
private static native void nativeSetNSWindowSecurityWarningPositioning(long nsWindowPtr, double x, double y, float biasX, float biasY);
|
||||
private static native void nativeSetEnabled(long nsWindowPtr, boolean isEnabled);
|
||||
private static native void nativeSynthesizeMouseEnteredExitedEvents();
|
||||
private static native void nativeDispose(long nsWindowPtr);
|
||||
|
@ -101,8 +101,7 @@ Java_sun_lwawt_macosx_CPlatformComponent_nativeCreateComponent
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
|
||||
CALayer *windowLayer = jlong_to_ptr(windowLayerPtr);
|
||||
surfaceLayers = [[AWTSurfaceLayers alloc] initWithWindowLayer: windowLayer];
|
||||
CFRetain(surfaceLayers);
|
||||
@ -127,7 +126,6 @@ JNF_COCOA_ENTER(env);
|
||||
AWTSurfaceLayers *surfaceLayers = OBJC(surfaceLayersPtr);
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
CGRect rect = CGRectMake(x, y, width, height);
|
||||
[surfaceLayers setBounds: rect];
|
||||
|
@ -1243,8 +1243,7 @@ JNF_COCOA_ENTER(env);
|
||||
jobject cPlatformView = (*env)->NewGlobalRef(env, obj);
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
|
||||
CALayer *windowLayer = jlong_to_ptr(windowLayerPtr);
|
||||
AWTView *view = [[AWTView alloc] initWithRect:rect
|
||||
platformView:cPlatformView
|
||||
@ -1274,8 +1273,7 @@ JNF_COCOA_ENTER(env);
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
|
||||
if (toResize) {
|
||||
[view setAutoresizingMask: NSViewHeightSizable | NSViewWidthSizable];
|
||||
} else {
|
||||
@ -1308,8 +1306,7 @@ JNF_COCOA_ENTER(env);
|
||||
NSWindow *window = [view window];
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
|
||||
ret = (jint)[[AWTWindow getNSWindowDisplayID_AppKitThread: window] intValue];
|
||||
}];
|
||||
|
||||
@ -1336,8 +1333,7 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
|
||||
NSRect viewBounds = [view bounds];
|
||||
NSRect frameInWindow = [view convertRect:viewBounds toView:nil];
|
||||
rect = [[view window] convertRectToScreen:frameInWindow];
|
||||
@ -1366,9 +1362,7 @@ JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_CPlatformView_nativeIsViewUnder
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSView *nsView = OBJC(viewPtr);
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
NSPoint ptWindowCoords = [[nsView window] mouseLocationOutsideOfEventStream];
|
||||
NSPoint ptViewCoords = [nsView convertPoint:ptWindowCoords fromView:nil];
|
||||
underMouse = [nsView hitTest:ptViewCoords] != nil;
|
||||
|
@ -738,14 +738,12 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeCreateNSWind
|
||||
__block AWTWindow *window = nil;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
JNFWeakJObjectWrapper *platformWindow = [JNFWeakJObjectWrapper wrapperWithJObject:obj withEnv:env];
|
||||
NSView *contentView = OBJC(contentViewPtr);
|
||||
NSRect frameRect = NSMakeRect(x, y, w, h);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
|
||||
window = [[AWTWindow alloc] initWithPlatformWindow:platformWindow
|
||||
styleBits:styleBits
|
||||
@ -770,11 +768,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowSt
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jint mask, jint bits)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
|
||||
AWTWindow *window = (AWTWindow*)[nsWindow delegate];
|
||||
|
||||
@ -807,12 +803,10 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMe
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jlong menuBarPtr)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
CMenuBar *menuBar = OBJC(menuBarPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
|
||||
AWTWindow *window = (AWTWindow*)[nsWindow delegate];
|
||||
|
||||
@ -838,14 +832,12 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetNSWindo
|
||||
jobject ret = NULL;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
__block NSRect contentRect = NSZeroRect;
|
||||
__block NSRect frame = NSZeroRect;
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
|
||||
frame = [nsWindow frame];
|
||||
contentRect = [NSWindow contentRectForFrameRect:frame styleMask:[nsWindow styleMask]];
|
||||
@ -873,14 +865,12 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowBo
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jdouble originX, jdouble originY, jdouble width, jdouble height)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSRect jrect = NSMakeRect(originX, originY, width, height);
|
||||
|
||||
// TODO: not sure we need displayIfNeeded message in our view
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
|
||||
AWTWindow *window = (AWTWindow*)[nsWindow delegate];
|
||||
|
||||
@ -913,7 +903,6 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMi
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jdouble minW, jdouble minH, jdouble maxW, jdouble maxH)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
if (minW < 1) minW = 1;
|
||||
if (minH < 1) minH = 1;
|
||||
@ -921,8 +910,7 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
if (maxH < 1) maxH = 1;
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
|
||||
AWTWindow *window = (AWTWindow*)[nsWindow delegate];
|
||||
|
||||
@ -949,12 +937,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowT
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[nsWindow orderBack:nil];
|
||||
}];
|
||||
|
||||
@ -970,11 +955,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowT
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
|
||||
if (![nsWindow isKeyWindow]) {
|
||||
[nsWindow makeKeyAndOrderFront:nsWindow];
|
||||
@ -995,7 +978,6 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowTi
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jstring jtitle)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
[nsWindow performSelectorOnMainThread:@selector(setTitle:)
|
||||
@ -1016,15 +998,9 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeRevalidateNSW
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
if ([NSThread isMainThread]) {
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[nsWindow invalidateShadow];
|
||||
} else {
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[nsWindow invalidateShadow];
|
||||
}];
|
||||
}
|
||||
}];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -1060,13 +1036,10 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMi
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jlong nsImagePtr)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
NSImage *image = OBJC(nsImagePtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[nsWindow setMiniwindowImage:image];
|
||||
}];
|
||||
|
||||
@ -1082,35 +1055,16 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowRe
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jstring filename)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
NSURL *url = (filename == NULL) ? nil : [NSURL fileURLWithPath:JNFNormalizedNSStringForPath(env, filename)];
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[nsWindow setRepresentedURL:url];
|
||||
}];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: sun_lwawt_macosx_CPlatformWindow
|
||||
* Method: nativeSetNSWindowSecurityWarningPositioning
|
||||
* Signature: (JDDFF)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowSecurityWarningPositioning
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr, jdouble x, jdouble y, jfloat biasX, jfloat biasY)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
[JNFException raise:env as:kRuntimeException reason:"unimplemented"];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: sun_lwawt_macosx_CPlatformWindow
|
||||
* Method: nativeGetTopmostPlatformWindowUnderMouse
|
||||
@ -1144,10 +1098,8 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSynthesizeMou
|
||||
(JNIEnv *env, jclass clazz)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[AWTWindow synthesizeMouseEnteredExitedEventsForAllWindows];
|
||||
}];
|
||||
|
||||
@ -1168,7 +1120,7 @@ JNF_COCOA_ENTER(env);
|
||||
SEL toggleFullScreenSelector = @selector(toggleFullScreen:);
|
||||
if (![nsWindow respondsToSelector:toggleFullScreenSelector]) return;
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[nsWindow performSelector:toggleFullScreenSelector withObject:nil];
|
||||
}];
|
||||
|
||||
@ -1181,7 +1133,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetEnabled
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
AWTWindow *window = (AWTWindow*)[nsWindow delegate];
|
||||
|
||||
[window setEnabled: isEnabled];
|
||||
@ -1196,7 +1148,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeDispose
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *nsWindow = OBJC(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
AWTWindow *window = (AWTWindow*)[nsWindow delegate];
|
||||
|
||||
if ([AWTWindow lastKeyWindow] == window) {
|
||||
|
@ -515,10 +515,9 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt_Application_nativeInitializeApplicationDelegate
|
||||
(JNIEnv *env, jclass clz)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
// Force initialization to happen on AppKit thread!
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[ApplicationDelegate sharedDelegate];
|
||||
}];
|
||||
JNF_COCOA_EXIT(env);
|
||||
@ -532,10 +531,9 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeOpenCocoaAboutWindow
|
||||
(JNIEnv *env, jclass clz)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[NSApp orderFrontStandardAboutPanel:nil];
|
||||
}];
|
||||
|
||||
@ -550,10 +548,9 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeReplyToAppShouldTerminate
|
||||
(JNIEnv *env, jclass clz, jboolean doTerminate)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[NSApp replyToApplicationShouldTerminate:doTerminate];
|
||||
}];
|
||||
|
||||
@ -568,7 +565,6 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeRegisterForNotification
|
||||
(JNIEnv *env, jclass clz, jint notificationType)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
[ThreadUtilities performOnMainThread:@selector(_registerForNotification:)
|
||||
onObject:[ApplicationDelegate class]
|
||||
@ -586,13 +582,10 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockMenu
|
||||
(JNIEnv *env, jclass clz, jlong nsMenuPtr)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSMenu *menu = (NSMenu *)jlong_to_ptr(nsMenuPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
[ApplicationDelegate sharedDelegate].fDockMenu = menu;
|
||||
}];
|
||||
|
||||
@ -607,14 +600,13 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockIconImage
|
||||
(JNIEnv *env, jclass clz, jlong nsImagePtr)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSImage *_image = (NSImage *)jlong_to_ptr(nsImagePtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(_setDockIconImage:)
|
||||
on:[ApplicationDelegate class]
|
||||
withObject:_image
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(_setDockIconImage:)
|
||||
on:[ApplicationDelegate class]
|
||||
withObject:_image
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -629,12 +621,9 @@ JNIEXPORT jlong JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeGetDockIc
|
||||
{
|
||||
__block NSImage *image = nil;
|
||||
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
image = [ApplicationDelegate _dockIconImage];
|
||||
CFRetain(image);
|
||||
}];
|
||||
@ -652,13 +641,10 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockIconBadge
|
||||
(JNIEnv *env, jclass clz, jstring badge)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSString *badgeString = JNFJavaToNSString(env, badge);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
NSDockTile *dockTile = [NSApp dockTile];
|
||||
[dockTile setBadgeLabel:badgeString];
|
||||
[dockTile display];
|
||||
@ -675,12 +661,9 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeRequestActivation
|
||||
(JNIEnv *env, jclass clz, jboolean allWindows)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
NSApplicationActivationOptions options = allWindows ? NSApplicationActivateAllWindows : 0;
|
||||
options |= NSApplicationActivateIgnoringOtherApps; // without this, nothing happens!
|
||||
[[NSRunningApplication currentApplication] activateWithOptions:options];
|
||||
@ -697,12 +680,9 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeRequestUserAttention
|
||||
(JNIEnv *env, jclass clz, jboolean critical)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[NSApp requestUserAttention:critical ? NSCriticalRequest : NSInformationalRequest];
|
||||
}];
|
||||
|
||||
@ -717,13 +697,12 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeOpenHelpViewer
|
||||
(JNIEnv *env, jclass clz)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThread:@selector(showHelp:)
|
||||
on:NSApp
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(showHelp:)
|
||||
on:NSApp
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -736,7 +715,6 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeEnableSuddenTermination
|
||||
(JNIEnv *env, jclass clz)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[[NSProcessInfo processInfo] enableSuddenTermination]; // Foundation thread-safe
|
||||
@ -752,7 +730,6 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeDisableSuddenTermination
|
||||
(JNIEnv *env, jclass clz)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[[NSProcessInfo processInfo] disableSuddenTermination]; // Foundation thread-safe
|
||||
@ -768,12 +745,9 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMenuBarHandler_nativeSetMenuState
|
||||
(JNIEnv *env, jclass clz, jint menuID, jboolean visible, jboolean enabled)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
ApplicationDelegate *delegate = [ApplicationDelegate sharedDelegate];
|
||||
switch (menuID) {
|
||||
case com_apple_eawt__AppMenuBarHandler_MENU_ABOUT:
|
||||
@ -796,12 +770,10 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMenuBarHandler_nativeSetDefaultMenuBar
|
||||
(JNIEnv *env, jclass clz, jlong cMenuBarPtr)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
CMenuBar *menu = (CMenuBar *)jlong_to_ptr(cMenuBarPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[ApplicationDelegate sharedDelegate].fDefaultMenuBar = menu;
|
||||
}];
|
||||
|
||||
|
@ -109,7 +109,6 @@ static CClipboard *sClipboard = nil;
|
||||
}
|
||||
|
||||
- (void) javaDeclareTypes:(NSArray *)inTypes withOwner:(jobject)inClipboard jniEnv:(JNIEnv *)inEnv {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
//NSLog(@"CClipboard javaDeclareTypes %@ withOwner", inTypes);
|
||||
|
||||
@ -134,7 +133,6 @@ static CClipboard *sClipboard = nil;
|
||||
|
||||
|
||||
- (NSArray *) javaGetTypes {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSMutableArray *args = [NSMutableArray arrayWithCapacity:1];
|
||||
[ThreadUtilities performOnMainThread:@selector(_nativeGetTypes:) onObject:self withObject:args waitUntilDone:YES awtMode:YES];
|
||||
@ -152,7 +150,6 @@ static CClipboard *sClipboard = nil;
|
||||
}
|
||||
|
||||
- (void) javaSetData:(NSData *)inData forType:(NSString *) inFormat {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
CClipboardUpdate *newUpdate = [[CClipboardUpdate alloc] initWithData:inData withFormat:inFormat];
|
||||
[ThreadUtilities performOnMainThread:@selector(_nativeSetData:) onObject:self withObject:newUpdate waitUntilDone:YES awtMode:YES];
|
||||
@ -171,7 +168,6 @@ static CClipboard *sClipboard = nil;
|
||||
}
|
||||
|
||||
- (NSData *) javaGetDataForType:(NSString *) inFormat {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSMutableArray *args = [NSMutableArray arrayWithObject:inFormat];
|
||||
[ThreadUtilities performOnMainThread:@selector(_nativeGetDataForType:) onObject:self withObject:args waitUntilDone:YES awtMode:YES];
|
||||
|
@ -74,7 +74,6 @@ Java_sun_lwawt_macosx_CCursorManager_nativeSetBuiltInCursor
|
||||
(JNIEnv *env, jclass class, jint type, jstring name)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSString *cursorName = JNFJavaToNSString(env, name);
|
||||
SEL cursorSelector = (type == sun_lwawt_macosx_CCursorManager_NAMED_CURSOR) ? lookupCursorSelectorForName(cursorName) : lookupCursorSelectorForType(type);
|
||||
@ -87,9 +86,7 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
[JNFException raise:env as:kNoSuchMethodException reason:"missing NSCursor selector"];
|
||||
}
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
setCursorOnAppKitThread([[NSCursor class] performSelector:cursorSelector]);
|
||||
}];
|
||||
|
||||
@ -101,12 +98,9 @@ Java_sun_lwawt_macosx_CCursorManager_nativeSetCustomCursor
|
||||
(JNIEnv *env, jclass class, jlong imgPtr, jdouble x, jdouble y)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
NSImage *image = (NSImage *)jlong_to_ptr(imgPtr);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
NSCursor *cursor = [[NSCursor alloc] initWithImage:image
|
||||
hotSpot:(NSPoint){ x, y }];
|
||||
setCursorOnAppKitThread(cursor);
|
||||
@ -127,8 +121,6 @@ JNF_COCOA_ENTER(env);
|
||||
__block NSPoint pt = NSZeroPoint;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
pt = ConvertNSScreenPoint(env, [NSEvent mouseLocation]);
|
||||
}];
|
||||
|
||||
@ -144,13 +136,11 @@ JNIEXPORT void JNICALL
|
||||
Java_sun_lwawt_macosx_CCursorManager_nativeSetAllowsCursorSetInBackground
|
||||
(JNIEnv *env, jclass class, jboolean allows)
|
||||
{
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
SEL allowsSetInBackground_SEL = @selector(javaSetAllowsCursorSetInBackground:);
|
||||
if ([[NSCursor class] respondsToSelector:allowsSetInBackground_SEL]) {
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
NSMethodSignature *allowsSetInBackground_sig =
|
||||
[[NSCursor class] methodSignatureForSelector:allowsSetInBackground_SEL];
|
||||
NSInvocation *invocation =
|
||||
|
@ -36,8 +36,6 @@
|
||||
JNIEXPORT jint JNICALL Java_sun_lwawt_macosx_CDesktopPeer__1lsOpenURI
|
||||
(JNIEnv *env, jclass clz, jstring uri)
|
||||
{
|
||||
// AWT_ASSERT_ANY_THREAD
|
||||
|
||||
OSStatus status = noErr;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
@ -63,8 +61,6 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT jint JNICALL Java_sun_lwawt_macosx_CDesktopPeer__1lsOpenFile
|
||||
(JNIEnv *env, jclass clz, jstring jpath, jboolean print)
|
||||
{
|
||||
// AWT_ASSERT_ANY_THREAD
|
||||
|
||||
OSStatus status = noErr;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
|
@ -46,7 +46,7 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CDragSourceContextPeer_createNativ
|
||||
__block CDragSource* dragSource = nil;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
dragSource = [[CDragSource alloc] init:jthis component:jcomponent peer:jpeer control:controlObj
|
||||
transferable:jtransferable triggerEvent:jtrigger dragPosX:jdragposx
|
||||
dragPosY:jdragposy modifiers:jextmodifiers clickCount:jclickcount timeStamp:jtimestamp
|
||||
@ -103,7 +103,7 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CDragSourceContextPeer_setNativeCursor
|
||||
(JNIEnv *env, jobject jthis, jlong nativeDragSourceVal, jobject jcursor, jint jcursortype)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
//AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
//JNF_COCOA_ENTER(env);
|
||||
// jobject gCursor = JNFNewGlobalRef(env, jcursor);
|
||||
|
@ -108,7 +108,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromArra
|
||||
jlong result = 0L;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_ANY_THREAD;
|
||||
|
||||
NSBitmapImageRep* imageRep = CImage_CreateImageRep(env, buffer, width, height);
|
||||
if (imageRep) {
|
||||
@ -139,7 +138,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromArra
|
||||
jlong result = 0L;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_ANY_THREAD;
|
||||
|
||||
jsize num = (*env)->GetArrayLength(env, buffers);
|
||||
NSMutableArray * reps = [NSMutableArray arrayWithCapacity: num];
|
||||
@ -187,7 +185,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromIcon
|
||||
NSImage *image = nil;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_ANY_THREAD;
|
||||
|
||||
IconRef iconRef;
|
||||
if (noErr == GetIconRef(kOnSystemDisk, kSystemIconsCreator, selector, &iconRef)) {
|
||||
@ -212,7 +209,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromFile
|
||||
NSImage *image = nil;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_ANY_THREAD;
|
||||
|
||||
NSString *path = JNFNormalizedNSStringForPath(env, file);
|
||||
image = [[NSImage alloc] initByReferencingFile:path];
|
||||
@ -234,10 +230,9 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageOfFileFr
|
||||
__block NSImage *image = nil;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_ANY_THREAD;
|
||||
|
||||
NSString *path = JNFNormalizedNSStringForPath(env, file);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
image = [[NSWorkspace sharedWorkspace] iconForFile:path];
|
||||
[image setScalesWhenResized:TRUE];
|
||||
if (image) CFRetain(image); // GC
|
||||
@ -259,7 +254,6 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CImage_nativeCreateNSImageFromImag
|
||||
NSImage *image = nil;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_ANY_THREAD;
|
||||
|
||||
image = [NSImage imageNamed:JNFJavaToNSString(env, name)];
|
||||
if (image) CFRetain(image); // GC
|
||||
@ -278,7 +272,6 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CImage_nativeCopyNSImageIntoArray
|
||||
(JNIEnv *env, jclass klass, jlong nsImgPtr, jintArray buffer, jint w, jint h)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_ANY_THREAD;
|
||||
|
||||
NSImage *img = (NSImage *)jlong_to_ptr(nsImgPtr);
|
||||
jint *dst = (*env)->GetPrimitiveArrayCritical(env, buffer, NULL);
|
||||
@ -301,7 +294,6 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CImage_nativeGetNSImageSize
|
||||
jobject size = NULL;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_ANY_THREAD;
|
||||
|
||||
size = NSToJavaSize(env, [(NSImage *)jlong_to_ptr(nsImgPtr) size]);
|
||||
|
||||
|
@ -153,7 +153,7 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CInputMethod_nativeGetCurrentInp
|
||||
__block NSString *keyboardInfo = NULL;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
keyboardInfo = [inputMethodController performSelector:@selector(currentInputMethodName)];
|
||||
[keyboardInfo retain];
|
||||
}];
|
||||
@ -177,7 +177,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CInputMethod_nativeNotifyPeer
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWTView *view = (AWTView *)jlong_to_ptr(nativePeer);
|
||||
JNFJObjectWrapper *inputMethodWrapper = [[JNFJObjectWrapper alloc] initWithJObject:inputMethod withEnv:env];
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[CInputMethod _nativeNotifyPeerWithView:view inputMethod:inputMethodWrapper];
|
||||
}];
|
||||
|
||||
@ -196,7 +196,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CInputMethod_nativeEndComposition
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWTView *view = (AWTView *)jlong_to_ptr(nativePeer);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[CInputMethod _nativeEndComposition:view];
|
||||
}];
|
||||
|
||||
@ -216,7 +216,7 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CInputMethod_getNativeLocale
|
||||
__block NSString *isoAbbreviation;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
isoAbbreviation = (NSString *) [inputMethodController performSelector:@selector(currentInputMethodLocale)];
|
||||
[isoAbbreviation retain];
|
||||
}];
|
||||
@ -259,7 +259,7 @@ JNF_COCOA_ENTER(env);
|
||||
NSString *localeStr = JNFJavaToNSString(env, locale);
|
||||
[localeStr retain];
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
[CInputMethod setKeyboardLayout:localeStr];
|
||||
}];
|
||||
|
||||
@ -293,7 +293,7 @@ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CInputMethodDescriptor_nativeGet
|
||||
__block NSArray *selectableArray = nil;
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
selectableArray = (NSArray *)[inputMethodController performSelector:@selector(availableInputMethodLocales)];
|
||||
[selectableArray retain];
|
||||
}];
|
||||
|
@ -55,12 +55,10 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
//- (void)finalize { [super finalize]; }
|
||||
|
||||
- (void)addJavaSubmenu:(CMenu *)submenu {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) onObject:self withObject:submenu waitUntilDone:YES awtMode:YES];
|
||||
}
|
||||
|
||||
- (void)addJavaMenuItem:(CMenuItem *)theMenuItem {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThread:@selector(addNativeItem_OnAppKitThread:) onObject:self withObject:theMenuItem waitUntilDone:YES awtMode:YES];
|
||||
}
|
||||
|
||||
@ -70,7 +68,6 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
}
|
||||
|
||||
- (void)setJavaMenuTitle:(NSString *)title {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
if (title) {
|
||||
[ThreadUtilities performOnMainThread:@selector(setNativeMenuTitle_OnAppKitThread:) onObject:self withObject:title waitUntilDone:YES awtMode:YES];
|
||||
@ -95,7 +92,6 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
}
|
||||
|
||||
- (void)deleteJavaItem:(jint)index {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThread:@selector(deleteNativeJavaItem_OnAppKitThread:) onObject:self withObject:[NSNumber numberWithInt:index] waitUntilDone:YES awtMode:YES];
|
||||
}
|
||||
|
@ -80,10 +80,10 @@ Java_sun_lwawt_macosx_CMenuComponent_nativeDispose
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThread:@selector(disposer)
|
||||
on:((id)jlong_to_ptr(menuItemObj))
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(disposer)
|
||||
on:((id)jlong_to_ptr(menuItemObj))
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
|
@ -104,7 +104,6 @@ JNF_COCOA_EXIT(env);
|
||||
}
|
||||
|
||||
- (void) setJavaLabel:(NSString *)theLabel shortcut:(NSString *)theKeyEquivalent modifierMask:(jint)modifiers {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
NSUInteger modifierMask = 0;
|
||||
|
||||
@ -126,8 +125,7 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
modifierMask = JavaModifiersToNsKeyModifiers(modifiers, NO);
|
||||
}
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
[fMenuItem setKeyEquivalent:theKeyEquivalent];
|
||||
[fMenuItem setKeyEquivalentModifierMask:modifierMask];
|
||||
[fMenuItem setTitle:theLabel];
|
||||
@ -135,32 +133,23 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
}
|
||||
|
||||
- (void) setJavaImage:(NSImage *)theImage {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[fMenuItem setImage:theImage];
|
||||
}];
|
||||
}
|
||||
|
||||
- (void) setJavaToolTipText:(NSString *)theText {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[fMenuItem setToolTip:theText];
|
||||
}];
|
||||
}
|
||||
|
||||
|
||||
- (void)setJavaEnabled:(BOOL) enabled {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
@synchronized(self) {
|
||||
fIsEnabled = enabled;
|
||||
|
||||
@ -173,7 +162,6 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
}
|
||||
|
||||
- (BOOL)isEnabled {
|
||||
// AWT_ASSERT_ANY_THREAD;
|
||||
|
||||
BOOL enabled = NO;
|
||||
@synchronized(self) {
|
||||
@ -184,11 +172,8 @@ AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
|
||||
- (void)setJavaState:(BOOL)newState {
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[fMenuItem setState:(newState ? NSOnState : NSOffState)];
|
||||
}];
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
jobject cPeerObjGlobal = JNFNewGlobalRef(env, peer);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
aCPopupMenu = [[CPopupMenu alloc] initWithPeer:cPeerObjGlobal];
|
||||
CFRetain(aCPopupMenu);
|
||||
[aCPopupMenu release];
|
||||
@ -82,7 +82,7 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPopupMenu_nativeShowPopupMenu
|
||||
|
||||
CPopupMenu* cPopupMenu = (CPopupMenu*)jlong_to_ptr(menuPtr);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
NSPoint loc = ConvertNSScreenPoint(env, NSMakePoint(x, y));
|
||||
|
||||
[[cPopupMenu menu] popUpMenuPositioningItem: nil
|
||||
|
@ -303,10 +303,9 @@ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeCreate
|
||||
__block AWTTrayIcon *trayIcon = nil;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
jobject thePeer = JNFNewGlobalRef(env, peer);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
trayIcon = [[AWTTrayIcon alloc] initWithPeer:thePeer];
|
||||
}];
|
||||
|
||||
@ -334,11 +333,10 @@ JNIEXPORT void JNICALL Java_java_awt_TrayIcon_initIDs
|
||||
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeSetToolTip
|
||||
(JNIEnv *env, jobject self, jlong model, jstring jtooltip) {
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
AWTTrayIcon *icon = jlong_to_ptr(model);
|
||||
NSString *tooltip = JNFJavaToNSString(env, jtooltip);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[icon setTooltip:tooltip];
|
||||
}];
|
||||
|
||||
@ -353,10 +351,9 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_setNativeImage
|
||||
(JNIEnv *env, jobject self, jlong model, jlong imagePtr, jboolean autosize) {
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
AWTTrayIcon *icon = jlong_to_ptr(model);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
[icon setImage:jlong_to_ptr(imagePtr) sizing:autosize];
|
||||
}];
|
||||
|
||||
@ -369,13 +366,10 @@ Java_sun_lwawt_macosx_CTrayIcon_nativeGetIconLocation
|
||||
jobject jpt = NULL;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
__block NSPoint pt = NSZeroPoint;
|
||||
AWTTrayIcon *icon = jlong_to_ptr(model);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
NSPoint loc = [icon getLocationOnScreen];
|
||||
pt = ConvertNSScreenPoint(env, loc);
|
||||
}];
|
||||
|
@ -46,7 +46,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSObject_release
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
id obj = (id)jlong_to_ptr(objectPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
CFRelease(obj);
|
||||
}];
|
||||
|
||||
@ -66,10 +66,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyAndOrderFront
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(makeKeyAndOrderFront:)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(makeKeyAndOrderFront:)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -86,10 +86,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeKeyWindow
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(makeKeyWindow)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(makeKeyWindow)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -106,10 +106,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_makeMainWindow
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(makeMainWindow)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(makeMainWindow)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -128,7 +128,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_canBecomeMainWindow
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
canBecomeMainWindow = [window canBecomeMainWindow];
|
||||
}];
|
||||
|
||||
@ -151,7 +151,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_isKeyWindow
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
isKeyWindow = [window isKeyWindow];
|
||||
}];
|
||||
|
||||
@ -172,10 +172,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFront
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(orderFront:)
|
||||
on:window
|
||||
withObject:window
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(orderFront:)
|
||||
on:window
|
||||
withObject:window
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -192,10 +192,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderOut
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(orderOut:)
|
||||
on:window
|
||||
withObject:window
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(orderOut:)
|
||||
on:window
|
||||
withObject:window
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -212,10 +212,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_orderFrontRegardless
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(orderFrontRegardless)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(orderFrontRegardless)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -233,7 +233,7 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
NSWindow *relativeTo = (NSWindow *)jlong_to_ptr(relativeToPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[window orderWindow:(NSWindowOrderingMode)order relativeTo:[relativeTo windowNumber]];
|
||||
}];
|
||||
|
||||
@ -267,7 +267,7 @@ JNF_COCOA_ENTER(env);
|
||||
initLevels();
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[window setLevel: LEVELS[level]];
|
||||
}];
|
||||
} else {
|
||||
@ -290,7 +290,7 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *parent = (NSWindow *)jlong_to_ptr(parentPtr);
|
||||
NSWindow *child = (NSWindow *)jlong_to_ptr(childPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[parent addChildWindow:child ordered:order];
|
||||
}];
|
||||
|
||||
@ -310,10 +310,10 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
AWTWindow *parent = (AWTWindow *)jlong_to_ptr(parentPtr);
|
||||
AWTWindow *child = (AWTWindow *)jlong_to_ptr(childPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(removeChildWindow:)
|
||||
on:parent
|
||||
withObject:child
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(removeChildWindow:)
|
||||
on:parent
|
||||
withObject:child
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -331,7 +331,7 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr);
|
||||
NSRect frame = NSMakeRect(x, y, w, h);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[window setFrame:frame display:display];
|
||||
}];
|
||||
|
||||
@ -350,7 +350,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setAlphaValue
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[window setAlphaValue:(CGFloat)alpha];
|
||||
}];
|
||||
|
||||
@ -369,7 +369,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_setOpaque
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[window setOpaque:(BOOL)opaque];
|
||||
}];
|
||||
|
||||
@ -389,7 +389,7 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr);
|
||||
NSColor *color = (NSColor *)jlong_to_ptr(colorPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[window setBackgroundColor:color];
|
||||
}];
|
||||
|
||||
@ -410,7 +410,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_screen
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
AWTWindow *window = (AWTWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
const NSScreen *screen = [window screen];
|
||||
CFRetain(screen); // GC
|
||||
screenPtr = ptr_to_jlong(screen);
|
||||
@ -432,10 +432,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_miniaturize
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(miniaturize:)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(miniaturize:)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -452,10 +452,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_deminiaturize
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(deminiaturize:)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(deminiaturize:)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -472,10 +472,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSWindow_zoom
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(zoom:)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(zoom:)
|
||||
on:window
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -493,10 +493,10 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
NSWindow *window = (NSWindow *)jlong_to_ptr(windowPtr);
|
||||
NSResponder *responder = (NSResponder *)jlong_to_ptr(responderPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(makeFirstResponder:)
|
||||
on:window
|
||||
withObject:responder
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(makeFirstResponder:)
|
||||
on:window
|
||||
withObject:responder
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -514,7 +514,7 @@ JNF_COCOA_ENTER(env);
|
||||
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
NSView *subview = (NSView *)jlong_to_ptr(subviewPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
[view addSubview:subview];
|
||||
}];
|
||||
|
||||
@ -533,10 +533,10 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_removeFromSuperview
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
[JNFRunLoop performOnMainThread:@selector(removeFromSuperview)
|
||||
on:view
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
[ThreadUtilities performOnMainThread:@selector(removeFromSuperview)
|
||||
on:view
|
||||
withObject:nil
|
||||
waitUntilDone:NO];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
}
|
||||
@ -553,7 +553,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_setFrame
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[view setFrame:NSMakeRect(x, y, w, h)];
|
||||
}];
|
||||
|
||||
@ -576,7 +576,7 @@ JNF_COCOA_ENTER(env);
|
||||
__block NSRect rect = NSZeroRect;
|
||||
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
rect = [view frame];
|
||||
}];
|
||||
|
||||
@ -599,7 +599,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_enterFullScreenMode
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
NSScreen *screen = [[view window] screen];
|
||||
NSDictionary *opts = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:NO], NSFullScreenModeAllScreens, nil];
|
||||
[view enterFullScreenMode:screen withOptions:opts];
|
||||
@ -620,7 +620,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_exitFullScreenMode
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[view exitFullScreenModeWithOptions:nil];
|
||||
}];
|
||||
|
||||
@ -641,7 +641,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSView_window
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
windowPtr = ptr_to_jlong([view window]);
|
||||
}];
|
||||
|
||||
@ -655,14 +655,14 @@ JNF_COCOA_EXIT(env);
|
||||
* Method: setHidden
|
||||
* Signature: (JZ)V
|
||||
*/
|
||||
JNIEXPORT jlong JNICALL
|
||||
JNIEXPORT void JNICALL
|
||||
Java_sun_lwawt_macosx_CWrapper_00024NSView_setHidden
|
||||
(JNIEnv *env, jclass cls, jlong viewPtr, jboolean toHide)
|
||||
{
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
NSView *view = (NSView *)jlong_to_ptr(viewPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:NO block:^(){
|
||||
[view setHidden:(BOOL)toHide];
|
||||
}];
|
||||
|
||||
@ -686,7 +686,7 @@ JNF_COCOA_ENTER(env);
|
||||
__block NSRect rect = NSZeroRect;
|
||||
|
||||
NSScreen *screen = (NSScreen *)jlong_to_ptr(screenPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
rect = [screen frame];
|
||||
}];
|
||||
|
||||
@ -713,7 +713,7 @@ JNF_COCOA_ENTER(env);
|
||||
__block NSRect rect = NSZeroRect;
|
||||
|
||||
NSScreen *screen = (NSScreen *)jlong_to_ptr(screenPtr);
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
rect = [screen visibleFrame];
|
||||
}];
|
||||
|
||||
@ -737,7 +737,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSScreen_screenByDisplayId
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
NSArray *screens = [NSScreen screens];
|
||||
for (NSScreen *screen in screens) {
|
||||
NSDictionary *screenInfo = [screen deviceDescription];
|
||||
@ -768,7 +768,7 @@ Java_sun_lwawt_macosx_CWrapper_00024NSColor_clearColor
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
clearColorPtr = ptr_to_jlong([NSColor clearColor]);
|
||||
}];
|
||||
|
||||
|
@ -1147,7 +1147,6 @@ static NSObject *sAttributeNamesLOCK = nil;
|
||||
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CAccessibility_focusChanged
|
||||
(JNIEnv *env, jobject jthis)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
[ThreadUtilities performOnMainThread:@selector(postFocusChanged:) onObject:[JavaComponentAccessibility class] withObject:nil waitUntilDone:NO awtMode:NO];
|
||||
@ -1164,7 +1163,6 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CAccessible_valueChanged
|
||||
(JNIEnv *env, jclass jklass, jlong element)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
[ThreadUtilities performOnMainThread:@selector(postValueChanged) onObject:(JavaComponentAccessibility *)jlong_to_ptr(element) withObject:nil waitUntilDone:NO awtMode:NO];
|
||||
JNF_COCOA_EXIT(env);
|
||||
@ -1178,7 +1176,6 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CAccessible_selectionChanged
|
||||
(JNIEnv *env, jclass jklass, jlong element)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
[ThreadUtilities performOnMainThread:@selector(postSelectionChanged) onObject:(JavaComponentAccessibility *)jlong_to_ptr(element) withObject:nil waitUntilDone:NO awtMode:NO];
|
||||
JNF_COCOA_EXIT(env);
|
||||
@ -1193,7 +1190,6 @@ JNF_COCOA_EXIT(env);
|
||||
JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CAccessible_unregisterFromCocoaAXSystem
|
||||
(JNIEnv *env, jclass jklass, jlong element)
|
||||
{
|
||||
AWT_ASSERT_NOT_APPKIT_THREAD;
|
||||
JNF_COCOA_ENTER(env);
|
||||
[ThreadUtilities performOnMainThread:@selector(unregisterFromCocoaAXSystem) onObject:(JavaComponentAccessibility *)jlong_to_ptr(element) withObject:nil waitUntilDone:NO awtMode:NO];
|
||||
JNF_COCOA_EXIT(env);
|
||||
|
@ -415,13 +415,9 @@ JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_LWCToolkit_isApplicationActive
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
||||
if ([NSThread isMainThread]) {
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^() {
|
||||
active = (jboolean)[NSRunningApplication currentApplication].active;
|
||||
} else {
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^() {
|
||||
active = (jboolean)[NSRunningApplication currentApplication].active;
|
||||
}];
|
||||
}
|
||||
}];
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
|
||||
|
@ -315,14 +315,9 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
// Don't set the delegate until the NSApplication has been created and
|
||||
// its finishLaunching has initialized it.
|
||||
// ApplicationDelegate is the support code for com.apple.eawt.
|
||||
void (^setDelegateBlock)() = ^(){
|
||||
[ThreadUtilities performOnMainThreadWaiting:YES block:^(){
|
||||
OSXAPP_SetApplicationDelegate([ApplicationDelegate sharedDelegate]);
|
||||
};
|
||||
if (onMainThread) {
|
||||
setDelegateBlock();
|
||||
} else {
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:setDelegateBlock];
|
||||
}
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)starter:(NSArray*)args {
|
||||
|
@ -98,8 +98,6 @@ do { \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
#define AWT_ASSERT_ANY_THREAD
|
||||
|
||||
#endif /* AWT_THREAD_ASSERTS_MESSAGES */
|
||||
|
||||
#ifdef AWT_THREAD_ASSERTS_WAIT
|
||||
@ -114,15 +112,12 @@ do { \
|
||||
while (pthread_main_np() != 0) {} \
|
||||
} while (0)
|
||||
|
||||
#define AWT_ASSERT_ANY_THREAD
|
||||
|
||||
#endif /* AWT_THREAD_ASSERTS_WAIT */
|
||||
|
||||
#else /* AWT_THREAD_ASSERTS */
|
||||
|
||||
#define AWT_ASSERT_APPKIT_THREAD do {} while (0)
|
||||
#define AWT_ASSERT_NOT_APPKIT_THREAD do {} while (0)
|
||||
#define AWT_ASSERT_ANY_THREAD
|
||||
|
||||
#endif /* AWT_THREAD_ASSERTS */
|
||||
// --------------------------------------------------------------------------
|
||||
@ -139,7 +134,10 @@ __attribute__((visibility("default")))
|
||||
+ (JNIEnv*)getJNIEnvUncached;
|
||||
|
||||
+ (void)performOnMainThread:(SEL)aSelector onObject:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait awtMode:(BOOL)inAWT;
|
||||
|
||||
//Wrappers for the corresponding JNFRunLoop methods with a check for main thread
|
||||
+ (void)performOnMainThreadWaiting:(BOOL)wait block:(void (^)())block;
|
||||
+ (void)performOnMainThread:(SEL)aSelector on:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait;
|
||||
@end
|
||||
|
||||
void OSXAPP_SetJavaVM(JavaVM *vm);
|
||||
|
@ -37,27 +37,13 @@ static JNIEnv *appKitEnv = NULL;
|
||||
static NSArray *sPerformModes = nil;
|
||||
static NSArray *sAWTPerformModes = nil;
|
||||
|
||||
static BOOL sCocoaComponentCompatibility = NO;
|
||||
static NSTimeInterval sCocoaComponentCompatibilityTimeout = 0.5;
|
||||
static BOOL sLoggingEnabled = YES;
|
||||
|
||||
#ifdef AWT_THREAD_ASSERTS_ENV_ASSERT
|
||||
int sAWTThreadAsserts = 0;
|
||||
#endif /* AWT_THREAD_ASSERTS_ENV_ASSERT */
|
||||
|
||||
|
||||
// This is for backward compatibility for those people using CocoaComponent
|
||||
// Since we've flipped the AWT threading model for Tiger (10.4), all the rules
|
||||
// for CocoaComponent are wrong.
|
||||
// So for existing CocoaComponent users, we can't be synchronous.
|
||||
// Making things totally asynchronous breaks a _lot_, so we try to be
|
||||
// synchronous and time out after a little bit.
|
||||
#define NOT_READY 0
|
||||
#define READY 1
|
||||
#define IN_PROGRESS 2
|
||||
|
||||
BOOL sInPerformFromJava = NO;
|
||||
NSUInteger sPerformCount = 0;
|
||||
|
||||
// This class is used so that performSelectorOnMainThread can be
|
||||
// controlled a little more easily by us. It has 2 roles.
|
||||
@ -73,8 +59,6 @@ NSUInteger sPerformCount = 0;
|
||||
|
||||
- (id) initWithTarget:(id)target selector:(SEL)selector arg:(id)arg wait:(BOOL)wait;
|
||||
- (void) perform;
|
||||
- (void) performCompatible;
|
||||
- (void) _performCompatible:(NSConditionLock *)resultLock;
|
||||
@end
|
||||
|
||||
|
||||
@ -113,8 +97,6 @@ NSUInteger sPerformCount = 0;
|
||||
sInPerformFromJava = YES;
|
||||
}
|
||||
|
||||
sPerformCount++;
|
||||
|
||||
// Actually do the work (cheat to avoid a method call)
|
||||
@try {
|
||||
objc_msgSend(fTarget, fSelector, fArg);
|
||||
@ -128,69 +110,6 @@ NSUInteger sPerformCount = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void) performCompatible {
|
||||
// We check if we are on the AppKit thread because frequently, apps
|
||||
// using CocoaComponent are doing things on the wrong thread!
|
||||
if (pthread_main_np()) {
|
||||
[fTarget performSelector:fSelector withObject:fArg];
|
||||
} else {
|
||||
// Setup the lock
|
||||
NSConditionLock *resultLock =
|
||||
[[NSConditionLock alloc] initWithCondition:NOT_READY];
|
||||
|
||||
// Make sure that if we return early, nothing gets released out
|
||||
// from under us
|
||||
[resultLock retain];
|
||||
[fTarget retain];
|
||||
[fArg retain];
|
||||
[self retain];
|
||||
// Do an asynchronous perform to the main thread.
|
||||
[self performSelectorOnMainThread:@selector(_performCompatible:)
|
||||
withObject:resultLock waitUntilDone:NO modes:sAWTPerformModes];
|
||||
|
||||
// Wait for a little bit for it to finish
|
||||
[resultLock lockWhenCondition:READY beforeDate:[NSDate dateWithTimeIntervalSinceNow:sCocoaComponentCompatibilityTimeout]];
|
||||
|
||||
// If the _performCompatible is actually in progress,
|
||||
// we should let it finish
|
||||
if ([resultLock condition] == IN_PROGRESS) {
|
||||
[resultLock lockWhenCondition:READY];
|
||||
}
|
||||
|
||||
if ([resultLock condition] == NOT_READY && sLoggingEnabled) {
|
||||
NSLog(@"[Java CocoaComponent compatibility mode]: Operation timed out due to possible deadlock: selector '%@' on target '%@' with args '%@'", NSStringFromSelector(fSelector), fTarget, fArg);
|
||||
}
|
||||
|
||||
[resultLock unlock];
|
||||
[resultLock autorelease];
|
||||
}
|
||||
}
|
||||
|
||||
- (void) _performCompatible:(NSConditionLock *)resultLock {
|
||||
// notify that the perform is in progress!
|
||||
[resultLock lock];
|
||||
[resultLock unlockWithCondition:IN_PROGRESS];
|
||||
|
||||
sPerformCount++;
|
||||
|
||||
// Actually do the work.
|
||||
@try {
|
||||
[fTarget performSelector:fSelector withObject:fArg];
|
||||
} @catch (NSException *e) {
|
||||
NSLog(@"*** CPerformer: ignoring exception '%@' raised during performCompatible of selector '%@' on target '%@' with args '%@'", e, NSStringFromSelector(fSelector), fTarget, fArg);
|
||||
} @finally {
|
||||
// notify done!
|
||||
[resultLock lock];
|
||||
[resultLock unlockWithCondition:READY];
|
||||
|
||||
// Clean up after ourselves
|
||||
[resultLock autorelease];
|
||||
[fTarget autorelease];
|
||||
[fArg autorelease];
|
||||
[self autorelease];
|
||||
}
|
||||
}
|
||||
@end
|
||||
|
||||
|
||||
@ -236,13 +155,8 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
// java event thread without deadlocking. See CToolkit.invokeAndWait.
|
||||
+ (void)performOnMainThread:(SEL)aSelector onObject:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait awtMode:(BOOL)inAWT {
|
||||
CPerformer *performer = [[CPerformer alloc] initWithTarget:target selector:aSelector arg:arg wait:wait];
|
||||
if (sCocoaComponentCompatibility && wait && inAWT) {
|
||||
[performer performCompatible];
|
||||
[performer autorelease];
|
||||
} else {
|
||||
[performer performSelectorOnMainThread:@selector(perform) withObject:nil waitUntilDone:wait modes:((inAWT) ? sAWTPerformModes : sPerformModes)]; // AWT_THREADING Safe (cover method)
|
||||
[performer release];
|
||||
}
|
||||
[performer performSelectorOnMainThread:@selector(perform) withObject:nil waitUntilDone:wait modes:((inAWT) ? sAWTPerformModes : sPerformModes)]; // AWT_THREADING Safe (cover method)
|
||||
[performer release];
|
||||
}
|
||||
|
||||
+ (void)performOnMainThreadWaiting:(BOOL)wait block:(void (^)())block {
|
||||
@ -253,6 +167,14 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
}
|
||||
}
|
||||
|
||||
+ (void)performOnMainThread:(SEL)aSelector on:(id)target withObject:(id)arg waitUntilDone:(BOOL)wait {
|
||||
if ([NSThread isMainThread] && wait == YES) {
|
||||
[target performSelector:aSelector withObject:arg];
|
||||
} else {
|
||||
[JNFRunLoop performOnMainThread:aSelector on:target withObject:arg waitUntilDone:wait];
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user