110 /*
111 * Post the display reconfiguration event.
112 */
113 static void displaycb_handle
114 (CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *userInfo)
115 {
116 if (flags == kCGDisplayBeginConfigurationFlag) return;
117
118 [ThreadUtilities performOnMainThreadWaiting:NO block:^() {
119
120 JNFPerformEnvBlock(JNFThreadDetachImmediately, ^(JNIEnv *env) {
121 JNFWeakJObjectWrapper *wrapper = (JNFWeakJObjectWrapper *)userInfo;
122
123 jobject graphicsEnv = [wrapper jObjectWithEnv:env];
124 if (graphicsEnv == NULL) return; // ref already GC'd
125 static JNF_CLASS_CACHE(jc_CGraphicsEnvironment, "sun/awt/CGraphicsEnvironment");
126 static JNF_MEMBER_CACHE(jm_displayReconfiguration,
127 jc_CGraphicsEnvironment, "_displayReconfiguration","(IZ)V");
128 JNFCallVoidMethod(env, graphicsEnv, jm_displayReconfiguration,
129 (jint) display, (jboolean) flags & kCGDisplayRemoveFlag);
130 });
131 }];
132 }
133
134 /*
135 * Class: sun_awt_CGraphicsEnvironment
136 * Method: registerDisplayReconfiguration
137 * Signature: ()J
138 */
139 JNIEXPORT jlong JNICALL
140 Java_sun_awt_CGraphicsEnvironment_registerDisplayReconfiguration
141 (JNIEnv *env, jobject this)
142 {
143 jlong ret = 0L;
144
145 JNF_COCOA_ENTER(env);
146
147 JNFWeakJObjectWrapper *wrapper = [[JNFWeakJObjectWrapper wrapperWithJObject:this withEnv:env] retain];
148
149 /* Register the callback */
|
110 /*
111 * Post the display reconfiguration event.
112 */
113 static void displaycb_handle
114 (CGDirectDisplayID display, CGDisplayChangeSummaryFlags flags, void *userInfo)
115 {
116 if (flags == kCGDisplayBeginConfigurationFlag) return;
117
118 [ThreadUtilities performOnMainThreadWaiting:NO block:^() {
119
120 JNFPerformEnvBlock(JNFThreadDetachImmediately, ^(JNIEnv *env) {
121 JNFWeakJObjectWrapper *wrapper = (JNFWeakJObjectWrapper *)userInfo;
122
123 jobject graphicsEnv = [wrapper jObjectWithEnv:env];
124 if (graphicsEnv == NULL) return; // ref already GC'd
125 static JNF_CLASS_CACHE(jc_CGraphicsEnvironment, "sun/awt/CGraphicsEnvironment");
126 static JNF_MEMBER_CACHE(jm_displayReconfiguration,
127 jc_CGraphicsEnvironment, "_displayReconfiguration","(IZ)V");
128 JNFCallVoidMethod(env, graphicsEnv, jm_displayReconfiguration,
129 (jint) display, (jboolean) flags & kCGDisplayRemoveFlag);
130 (*env)->DeleteLocalRef(env, graphicsEnv);
131 });
132 }];
133 }
134
135 /*
136 * Class: sun_awt_CGraphicsEnvironment
137 * Method: registerDisplayReconfiguration
138 * Signature: ()J
139 */
140 JNIEXPORT jlong JNICALL
141 Java_sun_awt_CGraphicsEnvironment_registerDisplayReconfiguration
142 (JNIEnv *env, jobject this)
143 {
144 jlong ret = 0L;
145
146 JNF_COCOA_ENTER(env);
147
148 JNFWeakJObjectWrapper *wrapper = [[JNFWeakJObjectWrapper wrapperWithJObject:this withEnv:env] retain];
149
150 /* Register the callback */
|