在Linux上使用SFML的std :: thread

时间:2014-01-29 20:05:21

标签: c++ linux eclipse multithreading c++11

我尝试将我的SFML项目(我在PC上的Visual Studio中开发)移植到使用Eclipse的Linux上。最后一切正常,除了std :: thread。我只是将它用于一个简单的渲染线程,代码在Windows上的Visual Studio中工作。但是当我尝试运行代码时:

std::thread renderThread(render);

在Eclipse中的Linux上,有一个错误:

  

[xcb]出队时队列中的未知请求
  [xcb]很可能这是一个多线程客户端,并且XInitThreads没有被称为   [xcb]流产,对不起。

即使我在创建Thread之前添加了“XInitThreads()”调用,启动后几秒钟也会显示相同的错误消息。
我已经链接了pthread库并将“-pthread”添加到编译器选项中。

提前感谢所有建议和各种帮助。


修改

代码段:

XInitThreads();

sf::ContextSettings settings;
settings.depthBits = 32;
settings.stencilBits = 32;
window.create(sf::VideoMode(1120, 630), "TITLE", sf::Style::Default, settings);
window.setVerticalSyncEnabled(true);
window.clear(COLOR);
window.display();
initStartup();  //loading Resources (.png, font...)
startscreen->phaseStarted = myClock.getElapsedTime().asMilliseconds();

window.setActive(false);

sf::Thread renderThread(render);
renderThread.launch();`



编辑2:

我注释掉了我的事件处理循环while (window.pollEvent(event)) {
和一个sf::Mouse::getPosition(window)电话

错误消失了。

0 个答案:

没有答案