IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Les fonctions g_idle


Sujet :

GTK+ avec C & C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Les fonctions g_idle
    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

  2. #2
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    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)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    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 ++

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par allergen Voir le message
    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
    Comment faire appel à nos propres fonctions ?

    Citation Envoyé par allergen Voir le message
    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...
    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

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Et bien,

    Cette fonction fait partie d'un programme que je potasse en ce moment. Je voulais connaitre son utilité.

    Merci

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    Citation Envoyé par teuf13 Voir le message
    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)
    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 ?

  7. #7
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Citation Envoyé par allergen Voir le message
    C'est en fait une création de thread.
    Pas exactement puisque les fonctions ne s'exécutent pas en parallèle mais selon les envies de l'ordonnaceur de la glib

    Citation Envoyé par allergen Voir le message
    Peut on en appeler plusieurs et comment cibler celui que l'on veut arreter?
    Un peu de gymnastique linguistique : Ajouter -> add, Supprimer -> ?

    g_source_remove

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2007
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 21
    Points : 20
    Points
    20
    Par défaut
    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

  9. #9
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Points : 1 633
    Points
    1 633
    Par défaut
    Citation Envoyé par allergen Voir le message
    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.
    Comme on peut le voir dans ce que t'as quoté,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    guint g_idle_add (GSourceFunc function, gpointer data);
    g_idle_add te renvoie un guint qui te sert d'identifiant pour les fonctions permettant d'enlever une fonction idle...


    Citation Envoyé par allergen Voir le message
    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.
    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.

  10. #10
    Débutant Avatar de Rniamo
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 508
    Points : 162
    Points
    162
    Par défaut
    je suis peut-être hors sujet mais dans ton code SDL t'as essayé de mettre des gtk_main_iteration() ?

Discussions similaires

  1. doc sur les fonctions
    Par masterfab dans le forum C
    Réponses: 18
    Dernier message: 23/06/2005, 17h55
  2. Pourquoi une seule valeur de retour pour les fonctions ?
    Par Bruno75 dans le forum Langages de programmation
    Réponses: 33
    Dernier message: 18/01/2004, 13h58
  3. Réponses: 11
    Dernier message: 22/12/2003, 21h06
  4. [Postgresql]Problème avec les fonctions ...
    Par fet dans le forum Requêtes
    Réponses: 4
    Dernier message: 02/10/2003, 09h04
  5. Réponses: 7
    Dernier message: 24/05/2003, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo