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