[C+ncurses] un getch() derriere select() [Résolu/Fermé]

Signaler
Messages postés
466
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
27 mars 2012
-
Messages postés
466
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
27 mars 2012
-
Bonjour,

Je suis en train de dev un client IRC en c avec les ncurses et je phase depuis hier sur un probleme.

Prenons juste la fonction get_keyboard recuperant les touches du clavier et les printant dans la fenetre de saisie.
J'utilise un select me permettant de check 2 fd : le fd du server et l'entree standart. Cela afin que, lorsque le mec est en train de taper et que son client recoit un message du server (genre un message d'un autre membre) celui ci s'affiche dans la fenetre de discussion tout de suite.
Le probleme etant que non seulement aucun message du serveur ne saffiche sans que le gars press ENTER, mais en plus il y a un decalage dans l'affichage du message que le client tape dans la fenetre de saisie.

Voici le bout de code concerne :

while (42)
    {
      FD_ZERO(&readf);
      FD_SET(0, &readf);
      FD_SET(gl_sfd, &readf);
      if (select(gl_sfd + 1, &readf, NULL, NULL, NULL) == -1)
        mvwprintw(gl_msg, gl_line++, 0, "*** %s", strerror(errno));
      else
        {
          if (FD_ISSET(0, &readf))
            {
              if (p.col == COLS - 1)
                {
                  p.col = 1;
                  move(++(p.line), p.col);
                }
              noecho();
              c = getch();
              if (do_keyboard(buf[0], str, &p, size) == RT_FAILURE)
                return ;
            }
          if (FD_ISSET(gl_sfd, &readf)
              && xrecv(gl_sfd, str_recv, KSIZE) > 0)
            gl_line += print_str(gl_msg, gl_line, 0, str_recv);
        }
    }


* Ne prenez pas attention a la fonction do_keyboard, elle ne fait en gros qu'un addch()
* Je soupconne une mauvaise utilisation de select() et getch(), qui est bloquant, de provoquer ce decalage...

Avez vous une idee du probleme ?

Merci =).

1 réponse

il n y a pas d astek pour t aider? ;)
Messages postés
466
Date d'inscription
lundi 15 septembre 2008
Statut
Membre
Dernière intervention
27 mars 2012
180
Beuh non... Mais c'est bon c'est regle =). Mauvaise utilisation de select()... stout.