Bonsoir,
Dans le cadre scolaire, je dois créer une sorte de petit jeu video.
Le code est en C++ et utilise la sfml pour la partie graphique.
J'ai un soucis, je dois thread la partie graphique, j'ai donc dans une class Gfx, un pointeur vers un sf::Thread.
class Gfx : public IGfx
{
private:
sf::RenderWindow *_window;
....
sf::Thread *_thread;
A l'initialisation de la class Gfx, je créer le thread :
_thread = new sf::Thread(&Gfx::loop, this);
_thread->launch();
void Gfx::loop()
{
_window = new sf::RenderWindow(sf::VideoMode(X_SCREEN, Y_SCREEN), "Affichage");
_window->clear(sf::Color::Black);
while (_window->isOpen())
{
sf::Event event;
_window->pollEvent(event);
while (_window->pollEvent(event))
{
if (event.type == sf::Event::Closed)
_window->close();
}
}
}
Le problème est qu'une erreur apparait quand je laisse la ligne du : pollEvent.
XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":0.0" after 103 requests (103 known processed) with 0 events remaining.
Avez-vous une possible idée de la cause ?
Cordialement
Bonsoir,
Merci pour ta réponse.
Néanmoins, je viens de mettre l'appel XInitThreads(), et cela fonctionne toujours mal.
Je peux faire mon jeu et au bout d'un certain temps malgré mon appel à la fonction XinitThreads(), j'ai un crash.
[xcb] Unknown request in queue while dequeuing
[xcb] Most likely this is a multi-threaded client and XInitThreads has not been called
[xcb] Aborting, sorry about that.
projet: xcb_io.c:179: dequeue_pending_request: Assertion `!xcb_xlib_unknown_req_in_deq' failed.
Gfx::Gfx(int x, int y)
{
XInitThreads();
_x = x;
_y = y;
LoadDatas();
_thread = new sf::Thread(&Gfx::loop, this);
_thread->launch();
sleep(1);
}
Cordialement