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 :

Expose event dans un thread


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut Expose event dans un thread
    Bonjour à tous,

    Dans une gtk_drawing_area, je dessine différents composants maison qui sont longs à (re)générer. Pour éviter de bloquer l'interface, chaque composant dispose de son propre thread. Lorsque ces threads ont terminés le travail, l'interface quoi être actualisée. Pour le moment, chaque thread lance donc la fonction gdk_window_invalidate_rect(). Je me demande si cette fonction peut être lancée en dehors du thread principal.
    Comment puis-je faire en sorte qu'un thread demande le lancement d'un expose-event de façon propre ?

    Je vous remercie par avance.

  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
    Ah, tu te poses les bonnes questions De façon générale, il ne faut pas appeler de fonctions gtk+ (et gdk) depuis un thread autre que le principal, tu peux lire http://library.gnome.org/devel/gdk/s...k-Threads.html pour plus de détails. Ce que tu peux faire pour "retourner" dans le thread principal pour invoquer une fonction gtk+, c'est utiliser g_idle_add qui est thread-safe et qui te garantit que son callback sera appelé dans le thread principal.

  3. #3
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    Salut,

    Je suis peut être à côté de la plaque, mais n'est il pas possible d'utiliser gtk_widget_queue_draw ()?

  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
    Je pense pas qu'utiliser cette fonction depuis un thread autre que celui ayant appelé gtk_main va donner le résultat escompté. Rien dans la doc de cette fonction ne parle de thread (du moins je n'ai rien vu à ce sujet , donc les précautions décrites dans le lien que j'ai donné précédemment sont à suivre si vraiment on veut l'utiliser à partir d'un thread (ce que je déconseille).

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Bonjour,

    La piste de la fonction g_idle_add() me semble très prometteuse et facile à mettre en oeuvre. Je n'y avais pas pensé, merci. Quant à l'utilisation de gtk_widget_queue_draw(), j'imagine que le problème reste le même.

    Merci à vous

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 24
    Par défaut
    Ok, ça fonctionne bien avec g_idle_add(). Merci.

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

Discussions similaires

  1. Event tick de timer créé dans un thread
    Par ppphil dans le forum Windows Forms
    Réponses: 1
    Dernier message: 25/07/2007, 11h41
  2. [C#] Thread et events dans une form
    Par farfadet dans le forum Windows Forms
    Réponses: 3
    Dernier message: 21/12/2006, 18h50
  3. [Process]Execution de process dans un thread
    Par devjava dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 18/06/2004, 10h34
  4. erreur d'un timer declaré dans un thread
    Par hak5 dans le forum C++Builder
    Réponses: 2
    Dernier message: 03/04/2004, 09h20
  5. Gestion des message windows dans les threads
    Par billyboy dans le forum Windows
    Réponses: 5
    Dernier message: 06/10/2003, 17h25

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