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 :

Raffraichir l'affichage (thread & processus)


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 15
    Par défaut Raffraichir l'affichage (thread & processus)
    Bonjour à tous!
    Je vais essayer de vous exposer mon problème le plus clairement possible. Je débute avec GTK ainsi qu'avec les Thread et les processus... Bref, j'ai une interface simple qui contient une 4 widget:

    - Une barre de progression.
    - Un bouton "Lancer".
    - Un bouton "Annuler".
    - Un bouton Quitter.

    Fonctionnement:

    Le bouton "Lancer" va comme son nom l'indique, lancer une suite de programme. La succession de ces programmes va me donner la création d'un fichier XML pour l'utiliser avec OpenCV. Donc lorsque l'on appui sur ce bouton, une fonction callback va être appelée et va elle même lancer une fonction (dans un thread: avec g_thread_create)qui va lancer l'ensemble des programme. Pour lancer mes programmes j'utilise des fonctions de l'API WIN 32, notamment Createprocess. Jusque la tout va bien, mon bouton annulé marche bien car j 'ai lancé l'exécution des programmes dans une fonction contenu dans un thread, donc gtk reprend la main régulièrement.

    Problème:

    A chaque fois que l'exécution d'un programme se termine je fais avancer ma barre de progression avec gtk_progress_bar_set_fraction() . Ma barre de progression avance bien mais l'affichage bug un peu lorsqu'une fênetre de l'un des programme lancé couvre mon interface et que je la déplace (il y a comme une trainée de pixel sur mon interface). J' ai tenté d' utilisé gtk_main_interation() à chaque fois que je fais avancer ma barre de progression mais cela empêche le lancement des programmes.

    résumé:

    - fonction main()
    - fonction callback() quand je clique sur lancer.
    - fonction execute_alll () (lancée dans un thread à partir de la fct callback)
    - fct° 1 (lance un programme n°1)
    - gtk_progress_bar_set_fraction
    - fct° 2 (lance un programme n°2)
    - fct° n (lance un programme n°n)

    Question:

    Comment faire pour qu'il n'y ait pas de trainée de pixels sur mon interface?

    précision: lorsque je redimension mon interface ou que je clic sur un bouton l'interface redevient normale.

  2. #2
    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
    Oula, si tu débutes avec gtk+ et que tu débutes avec les threads aussi, je te déconseille très fortement de mélanger les 2... Tu peux faire le lancement de tes programmes dans un thread, par contre il ne faut appeler *aucune* fonction de gtk+ depuis ce thread. Si la seule chose que tu veux faire, c'est de bouger ta progressbar, tu peux appeler g_idle_add depuis le thread, et régler la position de ta progressbar depis le callback invoqué par g_idle_add

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 15
    Par défaut
    Merci beaucoup !! Effectivement, j'ai fais comme tu m'a dis, ta solution a marché a la perfection! L'interface ne freeze plus!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Les threads des processus
    Par el_filosof dans le forum Windows Forms
    Réponses: 3
    Dernier message: 17/09/2007, 23h03
  2. Réponses: 1
    Dernier message: 24/09/2006, 10h51
  3. [SWT] [débutant] Raffraichir l'affichage
    Par jbwan dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 19/06/2006, 09h43
  4. [SIGNAL] threads et processus
    Par beLz dans le forum POSIX
    Réponses: 14
    Dernier message: 21/12/2004, 01h28

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