src/macosx/native/sun/awt/CMenuBar.m
Print this page
@@ -378,35 +378,23 @@
* Class: sun_lwawt_macosx_CMenuBar
* Method: nativeCreateMenuBar
* Signature: ()J
*/
JNIEXPORT jlong JNICALL
-Java_sun_lwawt_macosx_CMenuBar_nativeCreateMenuBar
- (JNIEnv *env, jobject peer)
+Java_sun_lwawt_macosx_CMenuBar_nativeCreateMenuBar(JNIEnv *env, jobject peer)
{
- CMenuBar *aCMenuBar = nil;
- JNF_COCOA_ENTER(env);
-
- jobject cPeerObjGlobal = (*env)->NewGlobalRef(env, peer);
-
- // We use an array here only to be able to get a return value
- NSMutableArray *args = [[NSMutableArray alloc] initWithObjects:[NSValue valueWithBytes:&cPeerObjGlobal objCType:@encode(jobject)], nil];
-
- [ThreadUtilities performOnMainThread:@selector(_create_OnAppKitThread:) on:[CMenuBar alloc] withObject:args waitUntilDone:YES];
+ __block CMenuBar *aCMenuBar = nil;
- aCMenuBar = (CMenuBar *)[args objectAtIndex: 0];
+JNF_COCOA_ENTER(env);
- if (aCMenuBar == nil) {
- return 0L;
- }
-
- // [args release];
-
- // A strange memory managment after that.
+ jobject cPeerObjGlobal = (*env)->NewGlobalRef(env, peer);
+ [ThreadUtilities performOnMainThreadWaiting:YES block:^() {
+ aCMenuBar = [[CMenuBar alloc] initWithPeer:cPeerObjGlobal];
+ }];
+JNF_COCOA_EXIT(env);
- JNF_COCOA_EXIT(env);
return ptr_to_jlong(aCMenuBar);
}
/*
* Class: sun_lwawt_macosx_CMenuBar