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 :

warning d'ex�cution avec gtk_events_pending()


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirm� Avatar de doderic
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    215
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 215
    Par d�faut warning d'ex�cution avec gtk_events_pending()
    Slt! sur une interface, j'essaie de r�cup�rer apr�s chaque seconde (d'un serveur) un texte que j'affiche sur un label. L'affichage doit �tre dynamique: rafraichissement de l'affichage apr�s chaque seconde

    j'ai utilis� gtk_events_pending()(pour le rafraissement instantan�) dans ce bout de code:

    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
    //...
    //reponse=sock_recv_text_dyn(sock);
     
    while(strcmp(reponse,"FIN")!=0 && strcmp(reponse,"0:0")!=0){
     
    while(gtk_events_pending()){
    gtk_main_iteration();
    }
                                    gtk_label_set_text(GTK_LABEL(hm_restantes),reponse);
     
    //free(reponse),reponse=NULL;
    //reponse=sock_recv_text_dyn(sock);
    }
    //free(reponse),reponse=NULL;
     
    //..
    je signale d'abord que la fonction dans laquelle se trouve ce bout de code se trouve elle-m�me dans un thread.

    Mon probl�me est le suivant. l'utilisation de gtk_events_pending() me donne le r�sultat que je veux mais pendant l'ex�cution, j'obtiens une erreur qui m'affiche ceci:

    Glib-Warning main loop already active in another thread (g_main_context_prepare())

    Merci de bien vouloir me dire ce qui ne va pas et comment le r�soudre.

    NB: quand j'enl�ve gtk_events_pending(), cette erreur � l'�x�cution ne vient plus mais l'affichage n'est pas dynamique sous mes yeux.

    Bonne suite � tous!

  2. #2
    Expert confirm�
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    F�vrier 2008
    Messages
    2 315
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 55
    Localisation : France, C�te d'Or (Bourgogne)

    Informations professionnelles :
    Activit� : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : F�vrier 2008
    Messages : 2 315
    Billets dans le blog
    5
    Par d�faut
    L'utilisation de thread avec Gtk+ donne souvent ce genre de probl�me. Je pense que tu demandes d'attendre que les �v�nements d'affichage de tes fen�tres soient r�alis�s avant de poursuivre. Le seul probl�me dans tout ca et que tu fais certainement cette demande dans un Thread. Et naturellement ce thread ne fait pas partie de la boucle principale de Gtk+. Donc conflit entre les deux.

    En r�gle g�n�rale l'utilisation des threads avec GTK+ juste pour avoir une mise � jour constante pendant de longs calculs (ou en attente de r�ponse r�seau par exemple) n'est pas la bonne solution.

    Puisque apparemment tu fais de la communication r�seau je te conseille d'aller jeter un oeil aux GIOChannel avec la couche GNET. La solution est l� sans utiliser les threads.

  3. #3
    Membre confirm� Avatar de doderic
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    215
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 215
    Par d�faut
    Citation Envoy� par gerald3d Voir le message
    Puisque apparemment tu fais de la communication r�seau je te conseille d'aller jeter un oeil aux GIOChannel avec la couche GNET. La solution est l� sans utiliser les threads.
    Merci gerald3d mais je ne m'y connais pas en GIOchannels et je vais voir au niveau de la doc officielle mais avant, j'ai une faveur � te demander. Pourrais tu me faire un bout de code o� les GIOchannels jouent un role qui pourrait m'aider � faire ce que je veux? un truc o� je peux l'utiliser au lieu de mettre ma fonction dans un thread. 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
    Si tu utilises gtk+ avec des threads, la premi�re chose � faire est de lire tr�s attentivement http://library.gnome.org/devel/gdk/s...k-Threads.html
    Tu peux pas t'en tirer avec des g_timeout_add ou des g_idle_add appel�s dans tes threads ? Ca permet de "transf�rer" du code � ex�cuter d'un thread vers le thread principal.

  5. #5
    Membre confirm� Avatar de doderic
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    215
    D�tails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 215
    Par d�faut
    Citation Envoy� par teuf13 Voir le message
    Si tu utilises gtk+ avec des threads, la premi�re chose � faire est de lire tr�s attentivement http://library.gnome.org/devel/gdk/s...k-Threads.html
    .
    Premi�rement j'avais pas dit que j'utilisais les thread de la Glib. j'utilise pthread.


    Tu peux pas t'en tirer avec des g_timeout_add ou des g_idle_add appel�s dans tes threads ? Ca permet de "transf�rer" du code � ex�cuter d'un thread vers le thread principal
    Ensuite j'ai pas dit non plus que j'ai utilis� ni mis g_timeout_add ou g_idle_add comme tu dis dans un thread. rien de �a! relis le post. Cordialement!

  6. #6
    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
    Citation Envoy� par doderic Voir le message
    Premi�rement j'avais pas dit que j'utilisais les thread de la Glib. j'utilise pthread.
    C'est pareil, j'ai parl� d'utiliser des threads avec gtk+, pthreads ou gthreads, �a n'a pas d'importance.


    Citation Envoy� par doderic Voir le message
    Ensuite j'ai pas dit non plus que j'ai utilis� ni mis g_timeout_add ou g_idle_add comme tu dis dans un thread. rien de �a! relis le post. Cordialement!
    J'ai pas dit que tu les avais utilis�s, c'�tait une suggestion que je te faisais qui permet d'�viter le genre de probl�me que tu d�cris et qui sont courants quand on utilise gtk+ avec plusieurs threads...

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Erreur d'ex�cution avec les Runtime
    Par denils dans le forum Runtime
    R�ponses: 30
    Dernier message: 22/01/2015, 15h21
  2. R�ponses: 6
    Dernier message: 28/11/2013, 11h55
  3. Probl�me d'ex�cution avec Dec C++
    Par PNL dans le forum C
    R�ponses: 20
    Dernier message: 02/10/2005, 03h59
  4. warnings � l'ex�cution en mode debug
    Par garestou dans le forum MFC
    R�ponses: 2
    Dernier message: 23/06/2005, 16h17
  5. Probl�me � l'ex�cution avec wxWindows (compil� avec BCC55)
    Par ShootDX dans le forum Autres �diteurs
    R�ponses: 5
    Dernier message: 14/11/2003, 18h04

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