mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-25 01:30:10 +00:00
7175707: [macosx] PIT: 8 b43 Not running on AppKit thread issue again
Reviewed-by: serb, anthony
This commit is contained in:
parent
80d1115eb7
commit
9a39ec25ca
@ -65,7 +65,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
private static native void nativeDispose(long nsWindowPtr);
|
||||
private static native CPlatformWindow nativeGetTopmostPlatformWindowUnderMouse();
|
||||
|
||||
private static native int nativeGetNSWindowDisplayID_AppKitThread(long nsWindowPtr);
|
||||
private static native int nativeGetNSWindowDisplayID(long nsWindowPtr);
|
||||
|
||||
// Loger to report issues happened during execution but that do not affect functionality
|
||||
private static final PlatformLogger logger = PlatformLogger.getLogger("sun.lwawt.macosx.CPlatformWindow");
|
||||
@ -444,7 +444,7 @@ public class CPlatformWindow extends CFRetainedResource implements PlatformWindo
|
||||
public GraphicsDevice getGraphicsDevice() {
|
||||
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
|
||||
CGraphicsEnvironment cge = (CGraphicsEnvironment)ge;
|
||||
int displayID = nativeGetNSWindowDisplayID_AppKitThread(getNSWindowPtr());
|
||||
int displayID = nativeGetNSWindowDisplayID(getNSWindowPtr());
|
||||
GraphicsDevice gd = cge.getScreenDevice(displayID);
|
||||
if (gd == null) {
|
||||
// this could possibly happen during device removal
|
||||
|
||||
@ -324,6 +324,13 @@ AWT_ASSERT_APPKIT_THREAD;
|
||||
}
|
||||
}
|
||||
|
||||
+ (NSNumber *) getNSWindowDisplayID_AppKitThread:(NSWindow *)window {
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
NSScreen *screen = [window screen];
|
||||
NSDictionary *deviceDescription = [screen deviceDescription];
|
||||
return [deviceDescription objectForKey:@"NSScreenNumber"];
|
||||
}
|
||||
|
||||
- (void) dealloc {
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
@ -1113,19 +1120,22 @@ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSynthesizeMou
|
||||
* Signature: (J)I
|
||||
*/
|
||||
JNIEXPORT jint JNICALL
|
||||
Java_sun_lwawt_macosx_CPlatformWindow_nativeGetNSWindowDisplayID_1AppKitThread
|
||||
Java_sun_lwawt_macosx_CPlatformWindow_nativeGetNSWindowDisplayID
|
||||
(JNIEnv *env, jclass clazz, jlong windowPtr)
|
||||
{
|
||||
jint ret; // CGDirectDisplayID
|
||||
__block jint ret; // CGDirectDisplayID
|
||||
|
||||
JNF_COCOA_ENTER(env);
|
||||
AWT_ASSERT_APPKIT_THREAD;
|
||||
|
||||
NSWindow *window = OBJC(windowPtr);
|
||||
NSScreen *screen = [window screen];
|
||||
NSDictionary *deviceDescription = [screen deviceDescription];
|
||||
NSNumber *displayID = [deviceDescription objectForKey:@"NSScreenNumber"];
|
||||
ret = (jint)[displayID intValue];
|
||||
|
||||
if ([NSThread isMainThread]) {
|
||||
ret = (jint)[[AWTWindow getNSWindowDisplayID_AppKitThread: window] intValue];
|
||||
} else {
|
||||
[JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
|
||||
ret = (jint)[[AWTWindow getNSWindowDisplayID_AppKitThread: window] intValue];
|
||||
}];
|
||||
}
|
||||
|
||||
JNF_COCOA_EXIT(env);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user