Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: [Résolu] Problème de sf::Text et sf::Thread  (Lu 1987 fois)

0 Membres et 1 Invité sur ce sujet

Rodd

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
    • E-mail
[Résolu] Problème de sf::Text et sf::Thread
« le: Décembre 26, 2012, 02:01:57 am »
Bonjour, j'ai un problème au niveau du draw(sf::Text), lorsque ce text est modifié dans un thread, il ne se draw pas bien (il manque tout les chiffres sauf le 0)

En code:
//DANS UN THREAD HORS CLASS
void Updater::downloadFtp()
{
    bar.updatePercentage(100);
}

void ProgressBar::updatePercentage(const float& value)
{
    std::ostringstream stream;
    stream << this->value;
    text.setString(stream.str()+"%");
    std::cout<<text.getString().toAnsiString()<<std::endl; //Affiche toujours les bons chiffres dans la console.

    text.setOrigin((int)(text.getGlobalBounds().width/2),(int)(text.getGlobalBounds().height/2));
    text.setPosition(50+(int)(this->value*5), 63);
}

//C'est la seule modification du text qui existe. :(
// Le seul moment où on appelle le text est pour ce code :

//CODE SE TROUVANT DANS UNE FONCTION DE LA CLASSE ProgressBar
{
     window.draw(text);
}
 

Ainsi on peut lire que les chiffres 0 et le % dans la fenetre ..
Pour 10 -> 0%
Pour 93 -> %
Pour 100 -> 00%
Mais correctement dans la console.

Donc..
- Si j'utilise updatePercentage() dans sa propre classe, tout s'affiche correctement.
- Que j'utilise updatePercentage() avec le thread ou avec la classe, le code : std::cout<<text.getString().toAnsiString()<<std::endl; affiche toujours le bon chiffre dans la console.



Voilà, merci de votre aide, je comprends pas ce que j'ai fais de travers.. :(
« Modifié: Décembre 27, 2012, 12:54:36 am par Rodd »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Problème de sf::Text et sf::Thread
« Réponse #1 le: Décembre 26, 2012, 09:45:01 am »
Il faut que tu mettes un glFlush() (et donc que tu lies à la bibliothèque OpenGL) après text.setString. C'est un bug connu.
Laurent Gomila - SFML developer

Rodd

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
    • E-mail
Re : Problème de sf::Text et sf::Thread
« Réponse #2 le: Décembre 27, 2012, 12:54:10 am »
C'était bien ça, merci beaucoup =) ca marche parfaitement.