2009-12-07 5 views
0

J'ai actuellement un code qui fait un appel de java dans mon application de cacao en utilisant JNI, dans la fonction JNI du coté cacao je crée un nouveau thread et assigne mon délégué NSApp comme le ferait la fonction principale. Voici le code que je utilise dans une classe fictive qui crée ma vraie classe:Classe Cocoa lancée à partir de JNI

@implementation MenuLauncher 

- (void)run { 
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; 
    [NSApplication sharedApplication]; 
    Menu *menu = [Menu sharedInstance]; 
    [NSApp setDelegate:menu]; 
    [NSApp run]; 
[pool release]; 
} 

@end 

Ceci est une copie de ce qui est dans ma fonction principale est que ce dans un fil.

Le résultat est l'interface que Menu crée ne répond pas et donne seulement la boule de plage spinny. Je fais une déclaration de sommeil simple sur le côté java pour garder le processus en vie. Le cacao gui devrait fonctionner dans son propre fil. Alors pourquoi est-il gelé?

Répondre

0

Vous devrez peut-être exécuter le code Cocoa sur le thread principal. De même, spécifier l'indicateur "-XstartOnFirstThread" à la commande java peut être nécessaire (comme c'est le cas pour les applications SWT).

Questions connexes