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 :

[GTK+/Glib] boucle et IHM


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Par défaut [GTK+/Glib] boucle et IHM
    Bonjour,
    J'ai fais un petit programme mettant en place une boucle glib (prepare/check/dispatche)
    J'ai fais en sorte que ma boucle face:

    Prepare (wait 1s)
    Dispatche
    Prepare (wait 1s)
    Dispatche
    Prepare (wait 1s)
    Dispatche
    ...

    Tout va pour le mieux sauf que dès que je fais le moindre truc sur mon IHM (ne serait ce que survoler un bouton) la boucle fait un tour entier sans faire le wait.

    Pour simplifier j'ai vraiment fait des trucs simples:
    Mon prepare fait un printf("prepare");
    Mon check fait un printf("check");

    quand je lance mon appli, j'ai bien des prepare et des check qui s'écrivent toutes les 1s et quand je survole mon appli avec ma souris, j'ai une dizaine de prepare/check qui s'écrive d'un coup

    Etrange non?
    Qq'un a une idée pour régler cela?

  2. #2
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    J'ai l'impression que tu as créé une source d'évènements utilisant GSource, c'est ça ?

    Je ne vois pas trop ce que tu cherches à réaliser, et tu ne nous donne pas de code. Si ce que tu cherches à faire c'est juste avoir une fonction qui se déclenche toutes les secondes, utilise g_timeout_add_seconds ou g_timeout_add.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Par défaut
    C'est exactement cela
    je te met qq lignes j'espère que ca pourra t'aider:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    gboolean printer_prepare(GSource *source, gint *timeout_) 
    {	
    	*timeout_ = 1000;
    	printf("prepare\n");
    	return FALSE;
    }
     
    gboolean printer_check(GSource *source) 
    {
    	g_assert(source);	
    	printf("check\n");
    	return FALSE;
    }

    et mon main:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    gint main (gint argc, gchar **argv) 
    {
     	GMainContext *p_stContext;
     
    	/* main loop creation */
    	p_stContext = g_main_context_default();
    	p_stLoop = g_main_loop_new(p_stContext, FALSE);
     
    	cb = (Printer_CommunicationCallback) &ExternalCallback;
     
    	gtk_init(&argc, &argv);
     
    	BuildGui();
     
    	/* Main Event Loop Run */
    	g_main_loop_run(p_stLoop);
    	g_main_loop_unref(p_stLoop);
     
    	return EXIT_SUCCESS;
    }
    Si tu as besoin d'autre chose n'hésite pas!
    Ce que je cherche à faire c'est faire en sorte que ma boucle de Glib donne la mains à ma fonction prepare check puis la reprenne pour gérer d'autre source d'event.
    Merci

  4. #4
    Membre Expert
    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
    Par défaut
    g_idle_add ?

  5. #5
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    Citation Envoyé par Skarsnick Voir le message
    Si tu as besoin d'autre chose n'hésite pas!
    Ce que je cherche à faire c'est faire en sorte que ma boucle de Glib donne la mains à ma fonction prepare check puis la reprenne pour gérer d'autre source d'event.
    Merci
    Bin ce que j'ai besoin de savoir, c'est pourquoi tu fais ça... C'est quoi ta source d'évènements à gérer ? Pourquoi tu as créé une source d'évènements plutôt que d'utiliser g_timeout_add si c'est juste pour lancer un traitement une fois par seconde ?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 110
    Par défaut
    En faite je n'ai pas un event à gérer une fois par seconde, c'est uniquement pour mes tests que je fais ce genre de chose. Pour mesurer le temps de traitement de mon imprimante.

    Ce que je veux c'est contrôler mon imprimante par des micro tâche en lui donnant la main quand j'en ai envie et en étant sûr qu'elle me la redonne très rapidement.

    J'ai beaucoup d'autres trucs à gérer en plus de l'imprimante...

Discussions similaires

  1. [Ruby] Boucles Gtk et GLib
    Par vinc-mai dans le forum GTK+
    Réponses: 4
    Dernier message: 23/12/2009, 16h03
  2. bug GTK -> glib
    Par LM_programme dans le forum Débuter
    Réponses: 1
    Dernier message: 02/12/2009, 21h46
  3. IHM Glut / GTK+
    Par Ange_blond dans le forum GLUT
    Réponses: 7
    Dernier message: 25/04/2007, 22h21
  4. IHM avec GTK
    Par beznito dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 26/03/2007, 17h42

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