< prev index next >

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

Print this page
rev 54883 : JDK-8220154 Improve java2d rendering performance on macOS by using Metal framework


1154 
1155         if ([nsWindow isKeyWindow] || [nsWindow isMainWindow]) {
1156             [window.javaMenuBar deactivate];
1157         }
1158 
1159         window.javaMenuBar = menuBar;
1160 
1161         CMenuBar* actualMenuBar = menuBar;
1162         if (actualMenuBar == nil) {
1163             actualMenuBar = [[ApplicationDelegate sharedDelegate] defaultMenuBar];
1164         }
1165 
1166         if ([nsWindow isKeyWindow] || [nsWindow isMainWindow]) {
1167             [CMenuBar activate:actualMenuBar modallyDisabled:NO];
1168         }
1169     }];
1170 
1171 JNF_COCOA_EXIT(env);
1172 }
1173 


1174 /*
1175  * Class:     sun_lwawt_macosx_CPlatformWindow
1176  * Method:    nativeGetNSWindowInsets
1177  * Signature: (J)Ljava/awt/Insets;
1178  */
1179 JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetNSWindowInsets
1180 (JNIEnv *env, jclass clazz, jlong windowPtr)
1181 {
1182     jobject ret = NULL;
1183 
1184 JNF_COCOA_ENTER(env);
1185 
1186     NSWindow *nsWindow = OBJC(windowPtr);
1187     __block NSRect contentRect = NSZeroRect;
1188     __block NSRect frame = NSZeroRect;
1189 
1190     [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
1191 
1192         frame = [nsWindow frame];
1193         contentRect = [NSWindow contentRectForFrameRect:frame styleMask:[nsWindow styleMask]];
1194     }];
1195 
1196     jint top = (jint)(frame.size.height - contentRect.size.height);
1197     jint left = (jint)(contentRect.origin.x - frame.origin.x);
1198     jint bottom = (jint)(contentRect.origin.y - frame.origin.y);
1199     jint right = (jint)(frame.size.width - (contentRect.size.width + left));




1200 
1201     static JNF_CLASS_CACHE(jc_Insets, "java/awt/Insets");
1202     static JNF_CTOR_CACHE(jc_Insets_ctor, jc_Insets, "(IIII)V");
1203     ret = JNFNewObject(env, jc_Insets_ctor, top, left, bottom, right);
1204 
1205 JNF_COCOA_EXIT(env);
1206     return ret;
1207 }
1208 
1209 /*
1210  * Class:     sun_lwawt_macosx_CPlatformWindow
1211  * Method:    nativeSetNSWindowBounds
1212  * Signature: (JDDDD)V
1213  */
1214 JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowBounds
1215 (JNIEnv *env, jclass clazz, jlong windowPtr, jdouble originX, jdouble originY, jdouble width, jdouble height)
1216 {
1217 JNF_COCOA_ENTER(env);
1218 
1219     NSRect jrect = NSMakeRect(originX, originY, width, height);




1154 
1155         if ([nsWindow isKeyWindow] || [nsWindow isMainWindow]) {
1156             [window.javaMenuBar deactivate];
1157         }
1158 
1159         window.javaMenuBar = menuBar;
1160 
1161         CMenuBar* actualMenuBar = menuBar;
1162         if (actualMenuBar == nil) {
1163             actualMenuBar = [[ApplicationDelegate sharedDelegate] defaultMenuBar];
1164         }
1165 
1166         if ([nsWindow isKeyWindow] || [nsWindow isMainWindow]) {
1167             [CMenuBar activate:actualMenuBar modallyDisabled:NO];
1168         }
1169     }];
1170 
1171 JNF_COCOA_EXIT(env);
1172 }
1173 
1174 extern jboolean metalEnabled;
1175 
1176 /*
1177  * Class:     sun_lwawt_macosx_CPlatformWindow
1178  * Method:    nativeGetNSWindowInsets
1179  * Signature: (J)Ljava/awt/Insets;
1180  */
1181 JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetNSWindowInsets
1182 (JNIEnv *env, jclass clazz, jlong windowPtr)
1183 {
1184     jobject ret = NULL;
1185 
1186 JNF_COCOA_ENTER(env);
1187 
1188     NSWindow *nsWindow = OBJC(windowPtr);
1189     __block NSRect contentRect = NSZeroRect;
1190     __block NSRect frame = NSZeroRect;
1191 
1192     [ThreadUtilities performOnMainThreadWaiting:YES block:^(){
1193 
1194         frame = [nsWindow frame];
1195         contentRect = [NSWindow contentRectForFrameRect:frame styleMask:[nsWindow styleMask]];
1196     }];
1197 
1198     jint top = (jint)(frame.size.height - contentRect.size.height);
1199     jint left = (jint)(contentRect.origin.x - frame.origin.x);
1200     jint bottom = (jint)(contentRect.origin.y - frame.origin.y);
1201     jint right = (jint)(frame.size.width - (contentRect.size.width + left));
1202     if (metalEnabled == JNI_TRUE) {
1203         bottom -= top;
1204         top = 0;
1205     }
1206 
1207     static JNF_CLASS_CACHE(jc_Insets, "java/awt/Insets");
1208     static JNF_CTOR_CACHE(jc_Insets_ctor, jc_Insets, "(IIII)V");
1209     ret = JNFNewObject(env, jc_Insets_ctor, top, left, bottom, right);
1210 
1211 JNF_COCOA_EXIT(env);
1212     return ret;
1213 }
1214 
1215 /*
1216  * Class:     sun_lwawt_macosx_CPlatformWindow
1217  * Method:    nativeSetNSWindowBounds
1218  * Signature: (JDDDD)V
1219  */
1220 JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowBounds
1221 (JNIEnv *env, jclass clazz, jlong windowPtr, jdouble originX, jdouble originY, jdouble width, jdouble height)
1222 {
1223 JNF_COCOA_ENTER(env);
1224 
1225     NSRect jrect = NSMakeRect(originX, originY, width, height);


< prev index next >