Bonsoir,
En fait je voulais savoir si qqn pouvais dire 2 mots sur ce type de fonction?
http://library.gnome.org/devel/glib/...tml#g-idle-add
Merci
Bonsoir,
En fait je voulais savoir si qqn pouvais dire 2 mots sur ce type de fonction?
http://library.gnome.org/devel/glib/...tml#g-idle-add
Merci
C'est à dire ? Tu veux savoir quoi ? Ca ajoute une fonction qui sera appelée par gtk+ quand il n'aura rien de mieux à faire (c'est à dire très souvent)
Oui je voulais juste savoir le genre d utilisation "classique " qu on en faisait. Et quel genre d avantages ca apporte au code. Dans quel situation on en a besoin etc.. Qu'est ce que ca peut ameliorer...
Merci ++
Comment faire appel à nos propres fonctions ?
Rassure moi, tu vas pas faire ça pour toutes les fonctions de GTK+ ? Logiquement c'est l'inverse que l'on fait : on a un problème et on cherche une fonction pour le résoudre
Et bien,
Cette fonction fait partie d'un programme que je potasse en ce moment. Je voulais connaitre son utilité.
Merci
D'après la FAQ:
Le problème vient du fait que GTK+ utilise une boucle sans fin, et tous les appels de fonctions se font par rappel (fonctions callback). Si vous souhaitez appeler une fonction qui s'exécutera en parallèle avec gtk_main, il faut demander à la glib (car c'est cette couche qui gère la boucle principale du programme), d'ajouter une fonction à la boucle des événements grâce à la fonction :
guint g_idle_add (GSourceFunc function, gpointer data);
La fonction à appeler doit avoir pour signature :
gboolean (*GSourceFunc) (gpointer data);
Où data sera le pointeur passé à la fonction g_idle_add.
C'est en fait une création de thread.
Peut-on en appeler plusieurs et comment cibler celui que l'on veut arrêter ?
Pas exactement puisque les fonctions ne s'exécutent pas en parallèle mais selon les envies de l'ordonnaceur de la glib
Un peu de gymnastique linguistique : Ajouter -> add, Supprimer -> ?
g_source_remove
Ce que je voulais dire c'est si on lance une fonctionA et une fonctionB
Si on appelle le g_idle_remove on ne lui dit pas lequel arreter... A moins qu'il arrete tout.
ce n'est pas la peine de rouvrir un autre topic
J'ai 3 remarque lors de l'utilisation de g_idle:
1-J'ai fait un programme qui permet d'editer un niveau de jeu. Il fonctionnait en SDL mais pour ajouter des fonctionnalites je suis passe a la GTKSDL.
Lorsque je lance une fenetre SDL via le g_idle le GTK rame ( ses fenetres ne s'actualisent plus) On dirait que SDL devient comme prioritaire.
2-Les variables des EventBox je suis oblige de les passer dans des variables globales pour les recuperer dans la SDL
3-La SDL ouvre une fenetre a part entiere et non pas dans la fenetre GTK
Ce sont des problemes connus ou ca peut etre tout et n'importe quoi?
Merci
Comme on peut le voir dans ce que t'as quoté,
g_idle_add te renvoie un guint qui te sert d'identifiant pour les fonctions permettant d'enlever une fonction idle...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 guint g_idle_add (GSourceFunc function, gpointer data);
Oui, pdt que le code dans le(s) callback(s) que t'as filés au g_idle_add s'exécute, les fenêtres gtk+ ne peuvent pas se rafraichir ni rien. Donc si ces traitements sont trop longs, ça va donner une impression de ralentissement (mauvaise réactivité) de ton interface.
je suis peut-être hors sujet mais dans ton code SDL t'as essayé de mettre des gtk_main_iteration() ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager