调用 sf::Window::close 后 SFML 中的分段错误

Segmentation Fault in SFML After calling sf::Window::close

我正尝试在与 main() 不同的线程上 运行 SFML window。调用 sf::Window::close 不会立即导致任何问题,但是在 main() 结束时,可能当 UI 对象被破坏时,会发生分段错误。如果不调用 sf::Window::close,则不会发生分段错误。

我正在 运行安装完全更新的 Debian 10。

#include <thread>
#include <SFML/Graphics.hpp>

int main() {
    sf::Window window(sf::VideoMode(500,500), "Test");

    std::thread th(&sf::Window::close, &window);
    th.join();
}

我发现了问题。在关闭另一个线程之前,您必须停用 window,就像这样。我最初在文档中错过了这一点。

#include <thread>
#include <SFML/Graphics.hpp>

int main() {
    sf::Window window(sf::VideoMode(500,500), "Test");

    window.setActive(false);

    std::thread th(&sf::Window::close, &window);
    th.join();
}