src/macosx/native/sun/awt/ApplicationDelegate.m

Print this page




 498     [image lockFocus];
 499     [view drawRect:frame];
 500     [image unlockFocus];
 501     [image autorelease];
 502     return image;
 503 }
 504 
 505 @end
 506 
 507 
 508 #pragma mark Native JNI calls
 509 
 510 /*
 511  * Class:     com_apple_eawt_Application
 512  * Method:    nativeInitializeApplicationDelegate
 513  * Signature: ()V
 514  */
 515 JNIEXPORT void JNICALL Java_com_apple_eawt_Application_nativeInitializeApplicationDelegate
 516 (JNIEnv *env, jclass clz)
 517 {
 518 AWT_ASSERT_NOT_APPKIT_THREAD;
 519 JNF_COCOA_ENTER(env);
 520     // Force initialization to happen on AppKit thread!
 521     [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
 522         [ApplicationDelegate sharedDelegate];
 523     }];
 524 JNF_COCOA_EXIT(env);
 525 }
 526 
 527 /*
 528  * Class:     com_apple_eawt__AppEventHandler
 529  * Method:    nativeOpenCocoaAboutWindow
 530  * Signature: ()V
 531  */
 532 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeOpenCocoaAboutWindow
 533 (JNIEnv *env, jclass clz)
 534 {
 535 AWT_ASSERT_NOT_APPKIT_THREAD;
 536 JNF_COCOA_ENTER(env);
 537 
 538     [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
 539         [NSApp orderFrontStandardAboutPanel:nil];
 540     }];
 541 
 542 JNF_COCOA_EXIT(env);
 543 }
 544 
 545 /*
 546  * Class:     com_apple_eawt__AppEventHandler
 547  * Method:    nativeReplyToAppShouldTerminate
 548  * Signature: (Z)V
 549  */
 550 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeReplyToAppShouldTerminate
 551 (JNIEnv *env, jclass clz, jboolean doTerminate)
 552 {
 553 AWT_ASSERT_NOT_APPKIT_THREAD;
 554 JNF_COCOA_ENTER(env);
 555 
 556     [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
 557         [NSApp replyToApplicationShouldTerminate:doTerminate];
 558     }];
 559 
 560 JNF_COCOA_EXIT(env);
 561 }
 562 
 563 /*
 564  * Class:     com_apple_eawt__AppEventHandler
 565  * Method:    nativeRegisterForNotification
 566  * Signature: (I)V
 567  */
 568 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeRegisterForNotification
 569 (JNIEnv *env, jclass clz, jint notificationType)
 570 {
 571 AWT_ASSERT_NOT_APPKIT_THREAD;
 572 JNF_COCOA_ENTER(env);
 573     [ThreadUtilities performOnMainThread:@selector(_registerForNotification:)
 574                                 onObject:[ApplicationDelegate class]
 575                               withObject:[NSNumber numberWithInt:notificationType]
 576                            waitUntilDone:NO
 577                                  awtMode:NO]; // AWT_THREADING Safe (non-blocking)
 578 JNF_COCOA_EXIT(env);
 579 }
 580 
 581 /*
 582  * Class:     com_apple_eawt__AppDockIconHandler
 583  * Method:    nativeSetDockMenu
 584  * Signature: (J)V
 585  */
 586 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockMenu
 587 (JNIEnv *env, jclass clz, jlong nsMenuPtr)
 588 {
 589 AWT_ASSERT_NOT_APPKIT_THREAD;
 590 JNF_COCOA_ENTER(env);
 591 
 592     NSMenu *menu = (NSMenu *)jlong_to_ptr(nsMenuPtr);
 593     [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
 594         AWT_ASSERT_APPKIT_THREAD;
 595 
 596         [ApplicationDelegate sharedDelegate].fDockMenu = menu;
 597     }];
 598 
 599 JNF_COCOA_EXIT(env);
 600 }
 601 
 602 /*
 603  * Class:     com_apple_eawt__AppDockIconHandler
 604  * Method:    nativeSetDockIconImage
 605  * Signature: (J)V
 606  */
 607 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockIconImage
 608 (JNIEnv *env, jclass clz, jlong nsImagePtr)
 609 {
 610 AWT_ASSERT_NOT_APPKIT_THREAD;
 611 JNF_COCOA_ENTER(env);
 612 
 613     NSImage *_image = (NSImage *)jlong_to_ptr(nsImagePtr);
 614     [JNFRunLoop performOnMainThread:@selector(_setDockIconImage:)
 615                                  on:[ApplicationDelegate class]
 616                          withObject:_image
 617                       waitUntilDone:NO];
 618 
 619 JNF_COCOA_EXIT(env);
 620 }
 621 
 622 /*
 623  * Class:     com_apple_eawt__AppDockIconHandler
 624  * Method:    nativeGetDockIconImage
 625  * Signature: ()J
 626  */
 627 JNIEXPORT jlong JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeGetDockIconImage
 628 (JNIEnv *env, jclass clz)
 629 {
 630     __block NSImage *image = nil;
 631 
 632 AWT_ASSERT_NOT_APPKIT_THREAD;
 633 JNF_COCOA_ENTER(env);
 634 
 635     [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){
 636         AWT_ASSERT_APPKIT_THREAD;
 637 
 638         image = [ApplicationDelegate _dockIconImage];
 639         CFRetain(image);
 640     }];
 641 
 642 JNF_COCOA_EXIT(env);
 643 
 644     return ptr_to_jlong(image);
 645 }
 646 
 647 /*
 648  * Class:     com_apple_eawt__AppDockIconHandler
 649  * Method:    nativeSetDockIconBadge
 650  * Signature: (Ljava/lang/String;)V
 651  */
 652 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockIconBadge
 653 (JNIEnv *env, jclass clz, jstring badge)
 654 {
 655 AWT_ASSERT_NOT_APPKIT_THREAD;
 656 JNF_COCOA_ENTER(env);
 657 
 658     NSString *badgeString = JNFJavaToNSString(env, badge);
 659     [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
 660         AWT_ASSERT_APPKIT_THREAD;
 661 
 662         NSDockTile *dockTile = [NSApp dockTile];
 663         [dockTile setBadgeLabel:badgeString];
 664         [dockTile display];
 665     }];
 666 
 667 JNF_COCOA_EXIT(env);
 668 }
 669 
 670 /*
 671  * Class:     com_apple_eawt__AppMiscHandlers
 672  * Method:    nativeRequestActivation
 673  * Signature: (Z)V
 674  */
 675 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeRequestActivation
 676 (JNIEnv *env, jclass clz, jboolean allWindows)
 677 {
 678 AWT_ASSERT_NOT_APPKIT_THREAD;
 679 JNF_COCOA_ENTER(env);
 680 
 681     [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
 682         AWT_ASSERT_APPKIT_THREAD;
 683 
 684         NSApplicationActivationOptions options = allWindows ? NSApplicationActivateAllWindows : 0;
 685         options |= NSApplicationActivateIgnoringOtherApps; // without this, nothing happens!
 686         [[NSRunningApplication currentApplication] activateWithOptions:options];
 687     }];
 688 
 689 JNF_COCOA_EXIT(env);
 690 }
 691 
 692 /*
 693  * Class:     com_apple_eawt__AppMiscHandlers
 694  * Method:    nativeRequestUserAttention
 695  * Signature: (Z)V
 696  */
 697 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeRequestUserAttention
 698 (JNIEnv *env, jclass clz, jboolean critical)
 699 {
 700 AWT_ASSERT_NOT_APPKIT_THREAD;
 701 JNF_COCOA_ENTER(env);
 702 
 703     [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
 704         AWT_ASSERT_APPKIT_THREAD;
 705 
 706         [NSApp requestUserAttention:critical ? NSCriticalRequest : NSInformationalRequest];
 707     }];
 708 
 709 JNF_COCOA_EXIT(env);
 710 }
 711 
 712 /*
 713  * Class:     com_apple_eawt__AppMiscHandlers
 714  * Method:    nativeOpenHelpViewer
 715  * Signature: ()V
 716  */
 717 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeOpenHelpViewer
 718 (JNIEnv *env, jclass clz)
 719 {
 720 AWT_ASSERT_NOT_APPKIT_THREAD;
 721 JNF_COCOA_ENTER(env);
 722 
 723     [JNFRunLoop performOnMainThread:@selector(showHelp:)
 724                                  on:NSApp
 725                          withObject:nil
 726                       waitUntilDone:NO];
 727 
 728 JNF_COCOA_EXIT(env);
 729 }
 730 
 731 /*
 732  * Class:     com_apple_eawt__AppMiscHandlers
 733  * Method:    nativeEnableSuddenTermination
 734  * Signature: ()V
 735  */
 736 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeEnableSuddenTermination
 737 (JNIEnv *env, jclass clz)
 738 {
 739 AWT_ASSERT_NOT_APPKIT_THREAD;
 740 JNF_COCOA_ENTER(env);
 741 
 742     [[NSProcessInfo processInfo] enableSuddenTermination]; // Foundation thread-safe
 743 
 744 JNF_COCOA_EXIT(env);
 745 }
 746 
 747 /*
 748  * Class:     com_apple_eawt__AppMiscHandlers
 749  * Method:    nativeDisableSuddenTermination
 750  * Signature: ()V
 751  */
 752 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeDisableSuddenTermination
 753 (JNIEnv *env, jclass clz)
 754 {
 755 AWT_ASSERT_NOT_APPKIT_THREAD;
 756 JNF_COCOA_ENTER(env);
 757 
 758     [[NSProcessInfo processInfo] disableSuddenTermination]; // Foundation thread-safe
 759 
 760 JNF_COCOA_EXIT(env);
 761 }
 762 
 763 /*
 764  * Class:     com_apple_eawt__AppMenuBarHandler
 765  * Method:    nativeSetMenuState
 766  * Signature: (IZZ)V
 767  */
 768 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMenuBarHandler_nativeSetMenuState
 769 (JNIEnv *env, jclass clz, jint menuID, jboolean visible, jboolean enabled)
 770 {
 771 AWT_ASSERT_NOT_APPKIT_THREAD;
 772 JNF_COCOA_ENTER(env);
 773 
 774     [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
 775         AWT_ASSERT_APPKIT_THREAD;
 776 
 777         ApplicationDelegate *delegate = [ApplicationDelegate sharedDelegate];
 778         switch (menuID) {
 779             case com_apple_eawt__AppMenuBarHandler_MENU_ABOUT:
 780                 [delegate _updateAboutMenu:visible enabled:enabled];
 781                 break;
 782             case com_apple_eawt__AppMenuBarHandler_MENU_PREFS:
 783                 [delegate _updatePreferencesMenu:visible enabled:enabled];
 784                 break;
 785         }
 786     }];
 787 
 788 JNF_COCOA_EXIT(env);
 789 }
 790 
 791 /*
 792  * Class:     com_apple_eawt__AppMenuBarHandler
 793  * Method:    nativeSetDefaultMenuBar
 794  * Signature: (J)V
 795  */
 796 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMenuBarHandler_nativeSetDefaultMenuBar
 797 (JNIEnv *env, jclass clz, jlong cMenuBarPtr)
 798 {
 799 AWT_ASSERT_NOT_APPKIT_THREAD;
 800 JNF_COCOA_ENTER(env);
 801 
 802     CMenuBar *menu = (CMenuBar *)jlong_to_ptr(cMenuBarPtr);
 803     [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){
 804         AWT_ASSERT_APPKIT_THREAD;
 805         [ApplicationDelegate sharedDelegate].fDefaultMenuBar = menu;
 806     }];
 807 
 808 JNF_COCOA_EXIT(env);
 809 }


 498     [image lockFocus];
 499     [view drawRect:frame];
 500     [image unlockFocus];
 501     [image autorelease];
 502     return image;
 503 }
 504 
 505 @end
 506 
 507 
 508 #pragma mark Native JNI calls
 509 
 510 /*
 511  * Class:     com_apple_eawt_Application
 512  * Method:    nativeInitializeApplicationDelegate
 513  * Signature: ()V
 514  */
 515 JNIEXPORT void JNICALL Java_com_apple_eawt_Application_nativeInitializeApplicationDelegate
 516 (JNIEnv *env, jclass clz)
 517 {

 518 JNF_COCOA_ENTER(env);
 519     // Force initialization to happen on AppKit thread!
 520     [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
 521         [ApplicationDelegate sharedDelegate];
 522     }];
 523 JNF_COCOA_EXIT(env);
 524 }
 525 
 526 /*
 527  * Class:     com_apple_eawt__AppEventHandler
 528  * Method:    nativeOpenCocoaAboutWindow
 529  * Signature: ()V
 530  */
 531 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeOpenCocoaAboutWindow
 532 (JNIEnv *env, jclass clz)
 533 {

 534 JNF_COCOA_ENTER(env);
 535 
 536     [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
 537         [NSApp orderFrontStandardAboutPanel:nil];
 538     }];
 539 
 540 JNF_COCOA_EXIT(env);
 541 }
 542 
 543 /*
 544  * Class:     com_apple_eawt__AppEventHandler
 545  * Method:    nativeReplyToAppShouldTerminate
 546  * Signature: (Z)V
 547  */
 548 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeReplyToAppShouldTerminate
 549 (JNIEnv *env, jclass clz, jboolean doTerminate)
 550 {

 551 JNF_COCOA_ENTER(env);
 552 
 553     [ThreadUtilities performOnMainThreadWaiting:NO block:^(){
 554         [NSApp replyToApplicationShouldTerminate:doTerminate];
 555     }];
 556 
 557 JNF_COCOA_EXIT(env);
 558 }
 559 
 560 /*
 561  * Class:     com_apple_eawt__AppEventHandler
 562  * Method:    nativeRegisterForNotification
 563  * Signature: (I)V
 564  */
 565 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppEventHandler_nativeRegisterForNotification
 566 (JNIEnv *env, jclass clz, jint notificationType)
 567 {

 568 JNF_COCOA_ENTER(env);
 569     [ThreadUtilities performOnMainThread:@selector(_registerForNotification:)
 570                                 onObject:[ApplicationDelegate class]
 571                               withObject:[NSNumber numberWithInt:notificationType]
 572                            waitUntilDone:NO
 573                                  awtMode:NO]; // AWT_THREADING Safe (non-blocking)
 574 JNF_COCOA_EXIT(env);
 575 }
 576 
 577 /*
 578  * Class:     com_apple_eawt__AppDockIconHandler
 579  * Method:    nativeSetDockMenu
 580  * Signature: (J)V
 581  */
 582 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockMenu
 583 (JNIEnv *env, jclass clz, jlong nsMenuPtr)
 584 {

 585 JNF_COCOA_ENTER(env);
 586 
 587     NSMenu *menu = (NSMenu *)jlong_to_ptr(nsMenuPtr);
 588     [ThreadUtilities performOnMainThreadWaiting:YES block:^(){


 589         [ApplicationDelegate sharedDelegate].fDockMenu = menu;
 590     }];
 591 
 592 JNF_COCOA_EXIT(env);
 593 }
 594 
 595 /*
 596  * Class:     com_apple_eawt__AppDockIconHandler
 597  * Method:    nativeSetDockIconImage
 598  * Signature: (J)V
 599  */
 600 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockIconImage
 601 (JNIEnv *env, jclass clz, jlong nsImagePtr)
 602 {

 603 JNF_COCOA_ENTER(env);
 604 
 605     NSImage *_image = (NSImage *)jlong_to_ptr(nsImagePtr);
 606     [ThreadUtilities performOnMainThread:@selector(_setDockIconImage:)
 607                                       on:[ApplicationDelegate class]
 608                               withObject:_image
 609                            waitUntilDone:NO];
 610 
 611 JNF_COCOA_EXIT(env);
 612 }
 613 
 614 /*
 615  * Class:     com_apple_eawt__AppDockIconHandler
 616  * Method:    nativeGetDockIconImage
 617  * Signature: ()J
 618  */
 619 JNIEXPORT jlong JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeGetDockIconImage
 620 (JNIEnv *env, jclass clz)
 621 {
 622     __block NSImage *image = nil;
 623 

 624 JNF_COCOA_ENTER(env);
 625 
 626     [ThreadUtilities performOnMainThreadWaiting:YES block:^(){


 627         image = [ApplicationDelegate _dockIconImage];
 628         CFRetain(image);
 629     }];
 630 
 631 JNF_COCOA_EXIT(env);
 632 
 633     return ptr_to_jlong(image);
 634 }
 635 
 636 /*
 637  * Class:     com_apple_eawt__AppDockIconHandler
 638  * Method:    nativeSetDockIconBadge
 639  * Signature: (Ljava/lang/String;)V
 640  */
 641 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppDockIconHandler_nativeSetDockIconBadge
 642 (JNIEnv *env, jclass clz, jstring badge)
 643 {

 644 JNF_COCOA_ENTER(env);
 645 
 646     NSString *badgeString = JNFJavaToNSString(env, badge);
 647     [ThreadUtilities performOnMainThreadWaiting:NO block:^(){


 648         NSDockTile *dockTile = [NSApp dockTile];
 649         [dockTile setBadgeLabel:badgeString];
 650         [dockTile display];
 651     }];
 652 
 653 JNF_COCOA_EXIT(env);
 654 }
 655 
 656 /*
 657  * Class:     com_apple_eawt__AppMiscHandlers
 658  * Method:    nativeRequestActivation
 659  * Signature: (Z)V
 660  */
 661 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeRequestActivation
 662 (JNIEnv *env, jclass clz, jboolean allWindows)
 663 {

 664 JNF_COCOA_ENTER(env);
 665 
 666     [ThreadUtilities performOnMainThreadWaiting:NO block:^(){


 667         NSApplicationActivationOptions options = allWindows ? NSApplicationActivateAllWindows : 0;
 668         options |= NSApplicationActivateIgnoringOtherApps; // without this, nothing happens!
 669         [[NSRunningApplication currentApplication] activateWithOptions:options];
 670     }];
 671 
 672 JNF_COCOA_EXIT(env);
 673 }
 674 
 675 /*
 676  * Class:     com_apple_eawt__AppMiscHandlers
 677  * Method:    nativeRequestUserAttention
 678  * Signature: (Z)V
 679  */
 680 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeRequestUserAttention
 681 (JNIEnv *env, jclass clz, jboolean critical)
 682 {

 683 JNF_COCOA_ENTER(env);
 684 
 685     [ThreadUtilities performOnMainThreadWaiting:NO block:^(){


 686         [NSApp requestUserAttention:critical ? NSCriticalRequest : NSInformationalRequest];
 687     }];
 688 
 689 JNF_COCOA_EXIT(env);
 690 }
 691 
 692 /*
 693  * Class:     com_apple_eawt__AppMiscHandlers
 694  * Method:    nativeOpenHelpViewer
 695  * Signature: ()V
 696  */
 697 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeOpenHelpViewer
 698 (JNIEnv *env, jclass clz)
 699 {

 700 JNF_COCOA_ENTER(env);
 701 
 702     [ThreadUtilities performOnMainThread:@selector(showHelp:)
 703                                       on:NSApp
 704                               withObject:nil
 705                            waitUntilDone:NO];
 706 
 707 JNF_COCOA_EXIT(env);
 708 }
 709 
 710 /*
 711  * Class:     com_apple_eawt__AppMiscHandlers
 712  * Method:    nativeEnableSuddenTermination
 713  * Signature: ()V
 714  */
 715 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeEnableSuddenTermination
 716 (JNIEnv *env, jclass clz)
 717 {

 718 JNF_COCOA_ENTER(env);
 719 
 720     [[NSProcessInfo processInfo] enableSuddenTermination]; // Foundation thread-safe
 721 
 722 JNF_COCOA_EXIT(env);
 723 }
 724 
 725 /*
 726  * Class:     com_apple_eawt__AppMiscHandlers
 727  * Method:    nativeDisableSuddenTermination
 728  * Signature: ()V
 729  */
 730 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMiscHandlers_nativeDisableSuddenTermination
 731 (JNIEnv *env, jclass clz)
 732 {

 733 JNF_COCOA_ENTER(env);
 734 
 735     [[NSProcessInfo processInfo] disableSuddenTermination]; // Foundation thread-safe
 736 
 737 JNF_COCOA_EXIT(env);
 738 }
 739 
 740 /*
 741  * Class:     com_apple_eawt__AppMenuBarHandler
 742  * Method:    nativeSetMenuState
 743  * Signature: (IZZ)V
 744  */
 745 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMenuBarHandler_nativeSetMenuState
 746 (JNIEnv *env, jclass clz, jint menuID, jboolean visible, jboolean enabled)
 747 {

 748 JNF_COCOA_ENTER(env);
 749 
 750     [ThreadUtilities performOnMainThreadWaiting:NO block:^(){


 751         ApplicationDelegate *delegate = [ApplicationDelegate sharedDelegate];
 752         switch (menuID) {
 753             case com_apple_eawt__AppMenuBarHandler_MENU_ABOUT:
 754                 [delegate _updateAboutMenu:visible enabled:enabled];
 755                 break;
 756             case com_apple_eawt__AppMenuBarHandler_MENU_PREFS:
 757                 [delegate _updatePreferencesMenu:visible enabled:enabled];
 758                 break;
 759         }
 760     }];
 761 
 762 JNF_COCOA_EXIT(env);
 763 }
 764 
 765 /*
 766  * Class:     com_apple_eawt__AppMenuBarHandler
 767  * Method:    nativeSetDefaultMenuBar
 768  * Signature: (J)V
 769  */
 770 JNIEXPORT void JNICALL Java_com_apple_eawt__1AppMenuBarHandler_nativeSetDefaultMenuBar
 771 (JNIEnv *env, jclass clz, jlong cMenuBarPtr)
 772 {

 773 JNF_COCOA_ENTER(env);
 774 
 775     CMenuBar *menu = (CMenuBar *)jlong_to_ptr(cMenuBarPtr);
 776     [ThreadUtilities performOnMainThreadWaiting:NO block:^(){

 777         [ApplicationDelegate sharedDelegate].fDefaultMenuBar = menu;
 778     }];
 779 
 780 JNF_COCOA_EXIT(env);
 781 }