提交 4a92fecc 编写于 作者: P pchelko

8034870: Regression: On Mac, fx app can't be launched if setting a javaagent for it

Reviewed-by: serb, art, anthony
上级 1ac24c1e
...@@ -188,14 +188,15 @@ JNIEXPORT void JNICALL ...@@ -188,14 +188,15 @@ JNIEXPORT void JNICALL
Java_sun_lwawt_macosx_LWCToolkit_initIDs Java_sun_lwawt_macosx_LWCToolkit_initIDs
(JNIEnv *env, jclass klass) { (JNIEnv *env, jclass klass) {
// set thread names // set thread names
if (![ThreadUtilities isAWTEmbedded]) {
dispatch_async(dispatch_get_main_queue(), ^(void){ dispatch_async(dispatch_get_main_queue(), ^(void){
[[NSThread currentThread] setName:@"AppKit Thread"]; [[NSThread currentThread] setName:@"AppKit Thread"];
JNIEnv *env = [ThreadUtilities getJNIEnv]; JNIEnv *env = [ThreadUtilities getJNIEnv];
static JNF_CLASS_CACHE(jc_LWCToolkit, "sun/lwawt/macosx/LWCToolkit"); static JNF_CLASS_CACHE(jc_LWCToolkit, "sun/lwawt/macosx/LWCToolkit");
static JNF_STATIC_MEMBER_CACHE(jsm_installToolkitThreadInJava, jc_LWCToolkit, "installToolkitThreadInJava", "()V"); static JNF_STATIC_MEMBER_CACHE(jsm_installToolkitThreadInJava, jc_LWCToolkit, "installToolkitThreadInJava", "()V");
JNFCallStaticVoidMethod(env, jsm_installToolkitThreadInJava); JNFCallStaticVoidMethod(env, jsm_installToolkitThreadInJava);
}); });
}
gNumberOfButtons = sun_lwawt_macosx_LWCToolkit_BUTTONS; gNumberOfButtons = sun_lwawt_macosx_LWCToolkit_BUTTONS;
......
...@@ -363,6 +363,7 @@ AWT_ASSERT_APPKIT_THREAD; ...@@ -363,6 +363,7 @@ AWT_ASSERT_APPKIT_THREAD;
// AppKit Application. // AppKit Application.
NSApplication *app = [NSApplicationAWT sharedApplication]; NSApplication *app = [NSApplicationAWT sharedApplication];
isEmbedded = ![NSApp isKindOfClass:[NSApplicationAWT class]]; isEmbedded = ![NSApp isKindOfClass:[NSApplicationAWT class]];
[ThreadUtilities setAWTEmbedded:isEmbedded];
if (!isEmbedded) { if (!isEmbedded) {
// Install run loop observers and set the AppKit Java thread name // Install run loop observers and set the AppKit Java thread name
......
...@@ -129,6 +129,8 @@ __attribute__((visibility("default"))) ...@@ -129,6 +129,8 @@ __attribute__((visibility("default")))
+ (JNIEnv*)getJNIEnvUncached; + (JNIEnv*)getJNIEnvUncached;
+ (void)detachCurrentThread; + (void)detachCurrentThread;
+ (void)setAppkitThreadGroup:(jobject)group; + (void)setAppkitThreadGroup:(jobject)group;
+ (void)setAWTEmbedded:(BOOL)embedded;
+ (BOOL)isAWTEmbedded;
//Wrappers for the corresponding JNFRunLoop methods with a check for main thread //Wrappers for the corresponding JNFRunLoop methods with a check for main thread
+ (void)performOnMainThreadWaiting:(BOOL)wait block:(void (^)())block; + (void)performOnMainThreadWaiting:(BOOL)wait block:(void (^)())block;
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
JavaVM *jvm = NULL; JavaVM *jvm = NULL;
static JNIEnv *appKitEnv = NULL; static JNIEnv *appKitEnv = NULL;
static jobject appkitThreadGroup = NULL; static jobject appkitThreadGroup = NULL;
static BOOL awtEmbedded = NO;
inline void attachCurrentThread(void** env) { inline void attachCurrentThread(void** env) {
if ([NSThread isMainThread]) { if ([NSThread isMainThread]) {
...@@ -87,6 +88,14 @@ AWT_ASSERT_APPKIT_THREAD; ...@@ -87,6 +88,14 @@ AWT_ASSERT_APPKIT_THREAD;
} }
} }
+ (void)setAWTEmbedded:(BOOL)embedded {
awtEmbedded = embedded;
}
+ (BOOL)isAWTEmbedded {
return awtEmbedded;
}
@end @end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册