< prev index next >

src/java.desktop/macosx/native/libawt_lwawt/awt/CGraphicsEnv.m

Print this page

        

@@ -24,10 +24,11 @@
  */
 
 #import "AWT_debug.h"
 
 #import "jni_util.h"
+#import "ThreadUtilities.h"
 
 #import <JavaNativeFoundation/JavaNativeFoundation.h>
 
 #define MAX_DISPLAYS 64
 

@@ -112,21 +113,24 @@
 static void displaycb_handle
 (CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *userInfo)
 {
     if (flags == kCGDisplayBeginConfigurationFlag) return;
 
+    [ThreadUtilities performOnMainThreadWaiting:NO block:^() {
+
     JNFPerformEnvBlock(JNFThreadDetachImmediately, ^(JNIEnv *env) {
         JNFWeakJObjectWrapper *wrapper = (JNFWeakJObjectWrapper *)userInfo;
 
         jobject graphicsEnv = [wrapper jObjectWithEnv:env];
         if (graphicsEnv == NULL) return; // ref already GC'd
         static JNF_CLASS_CACHE(jc_CGraphicsEnvironment, "sun/awt/CGraphicsEnvironment");
-        static JNF_MEMBER_CACHE(jm_displayReconfiguration, jc_CGraphicsEnvironment, "_displayReconfiguration", "(IZ)V");
+            static JNF_MEMBER_CACHE(jm_displayReconfiguration,
+                    jc_CGraphicsEnvironment, "_displayReconfiguration","(IZ)V");
         JNFCallVoidMethod(env, graphicsEnv, jm_displayReconfiguration,
-                            (jint) display, 
-                            (jboolean) flags & kCGDisplayRemoveFlag);
+                    (jint) display, (jboolean) flags & kCGDisplayRemoveFlag);
     });
+    }];
 }
 
 /*
  * Class:     sun_awt_CGraphicsEnvironment
  * Method:    registerDisplayReconfiguration
< prev index next >