8132382: [macosx] Crash during JMC or JavaFX execution when NSApplication is controlled by SWT or JavaFX libraries
Reviewed-by: kizune, alexsch
This commit is contained in:
parent
dfc226cfb6
commit
9f39d1674f
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -40,10 +40,17 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CFRetainedResource_nativeCFRelease
|
||||
if (releaseOnAppKitThread) {
|
||||
// Releasing resources on the main AppKit message loop only
|
||||
// Releasing resources on the nested loops may cause dangling
|
||||
// pointers after the nested loop is exited
|
||||
[NSApp postRunnableEvent:^(){
|
||||
CFRelease(jlong_to_ptr(ptr));
|
||||
}];
|
||||
// pointers after the nested loop is exited
|
||||
if ([NSApp respondsToSelector:@selector(postRunnableEvent:)]) {
|
||||
[NSApp postRunnableEvent:^() {
|
||||
CFRelease(jlong_to_ptr(ptr));
|
||||
}];
|
||||
} else {
|
||||
// could happen if we are embedded inside SWT/FX application,
|
||||
[JNFRunLoop performOnMainThreadWaiting:NO withBlock:^() {
|
||||
CFRelease(jlong_to_ptr(ptr));
|
||||
}];
|
||||
}
|
||||
} else {
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
|
Loading…
Reference in New Issue
Block a user