mon application fait bugger tous les menus contextuels !
apprenti bidouille
Membre
Bonjour !
j'ai fait il y a quelques mois un petit preferencePane sympathique, qui update votre avatar iChat et/ou Adium avec la pochette du CD que vous écoutez dans iTunes iChartwork ( http://yreuxsoftware.com/files/iChartwork2.0.zip )... Il marche très bien, et je n'ai aucun problème particulier sauf un truc très bizarre :
mon preferencePane lance un démon (iChartworkDaemon), et dès que ce démon est lancé, tous les menus en rapport avec les préférences système (modifier le fond d'écran quand on fait control-clic sur le bureau par exemple) ne font plus rien du tout ! ils sont toujours là , mais rien ne se passe. Dès que mon démon est killé, que ce soit par le terminal ou quand je décoche la case dans mon preferencePane, tout revient dans l'ordre aussitôt !
Si quelqu'un a une idée lumineuse ?! :P
Edit : Encore plus bizarre en fait ! mon démon est rendu invisible dans le Dock par :
dans le info.plist (c'est ce qui fait que mon application est un démon en quelque sorte)
Quand j'enlève cette option, le démon devient donc une application comme un autre.
Et bien cela m'a permis de voir qu'en fait, lorsque iChartworkDaemon est lancé (en mode application, c'est à dire visible dans le Dock etc..) les menus contextuels comme "Modifier le fond d'écran..." appellent iChartworkDaemon au lieu des preferences système !!
j'ai fait il y a quelques mois un petit preferencePane sympathique, qui update votre avatar iChat et/ou Adium avec la pochette du CD que vous écoutez dans iTunes iChartwork ( http://yreuxsoftware.com/files/iChartwork2.0.zip )... Il marche très bien, et je n'ai aucun problème particulier sauf un truc très bizarre :
mon preferencePane lance un démon (iChartworkDaemon), et dès que ce démon est lancé, tous les menus en rapport avec les préférences système (modifier le fond d'écran quand on fait control-clic sur le bureau par exemple) ne font plus rien du tout ! ils sont toujours là , mais rien ne se passe. Dès que mon démon est killé, que ce soit par le terminal ou quand je décoche la case dans mon preferencePane, tout revient dans l'ordre aussitôt !
Si quelqu'un a une idée lumineuse ?! :P
Edit : Encore plus bizarre en fait ! mon démon est rendu invisible dans le Dock par :
<key>LSUIElement</key><br /><string>1</string>
dans le info.plist (c'est ce qui fait que mon application est un démon en quelque sorte)
Quand j'enlève cette option, le démon devient donc une application comme un autre.
Et bien cela m'a permis de voir qu'en fait, lorsque iChartworkDaemon est lancé (en mode application, c'est à dire visible dans le Dock etc..) les menus contextuels comme "Modifier le fond d'écran..." appellent iChartworkDaemon au lieu des preferences système !!
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Ca n'a rien à voir avec le sujet (désolé) mais qu'elle est la différence entre un deamon et un helper ? (parce qu'en fait j'en sais rien)
Merci.
Un deamon c'est un truc plus bas-niveau, je ne suis pas tout à fait sur mais c'est aussi quelque chose qui tourne en tache de fond, mais ce n'est plus une simple app dans ce cas, mais déjà un truc qui n'a pas d'app principale, et qui s'occupe d'autre type d'affaire. Ensuite, de quoi je ne suis pas trop sur mais je pense que un de nos pro (n'est-ca pas ali?) peut nous dire plus en détails ce que c'est!
Merci
Sinon je vais essayer de lancer le debugger et de voir à partir de quand mon appli fait déconner les préfs systèmes ( dès que je rentre chez moi :P :P ), mais il me semble que j'avais déjà essayé, et qu'en fait dès que l'appli est lancée, avant même que le moindre code soit éxécuté, le problème existe déjà ... Ce que je peux essayer c'est de créer une appli vierge avec le même nom juste, car si ça se trouve c'est un niveau plus bas que ça déconne,et le système croà®t qu'iChartworkDaemon sert de substitut aux préférences Système... Mais bon j'ai quelques doutes lol... Bref je suis un peu perdu... Personne n'a connu ce problème ??
Pour résumer :
Quand mon application ne tourne pas, tout marche correctement dans le Système.
Quand mon application run, tous les menus contextuels du système comme "Modifier le fond d'écran..." appellent mon application (iChartworkDaemon) au lieu des Préférences Système.
:why?:
Définition de wikipedia d'un daemon:
bref c'est bien mignon tout ça mais ça m'aide pas vraiment.... ^^
Edit : Dans le truc que tu m'as donné : "Dans l'usage commun, un démon peut être n'importe quel processus qui fonctionne en arrière-plan, peu importe qu'il soit ou non un enfant de init."
Enfin tout ça c'est du chipotage, mais ça m'aide pas à résoudre mon problème...
Si je mets un breakpoint dans le main.m tout marche encore correctement.
Mais avant même d'exécuter le moindre code (avant la méthode init etc) il bloque déjà les préférences.. C'est une histoire de fou !
Comme toi Eddy,
sans code, je ne peux pas dire grand'chose...
.
Edit : ortho
Et si tu mets tout le code du projet en commentaire (sauf le main.m), ça fait quoi ?
Peut-être un nib corrompu ?! ... mouais... Vais essayer !
En fait : iChartwork est un prefPane, donc ses préférences sont stockées dans com.apple.systempreferences
du coup dans iChartworkDaemon, pusqu'il a besoin d'accéder aux préférences d'iChartwork, j'avais mis :
<key>CFBundleIdentifier</key>
<string>com.apple.systempreferences</string>
Ce qui me permettait d'utiliser NSUserDefaultsController pour accéder aux préférences... Mais évidement, cela avait pour effet d'ouvrir iChartworkDaemon au lieu des préférences Système !