gpt4 book ai didi

c++ - GTK+ : failure after several steps 中的重复窗口失效

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:19:30 25 4
gpt4 key购买 nike

我有一个计时器,它每秒调用一个方法 (perform_step)。 perform_step 进行一些计算并使我的窗口无效。这最初运行良好,但经过少量迭代后,不会触发窗口的 on_expose_event。通过调试我发现调用了窗口失效方法,但是没有进入事件处理程序。

有什么可能导致这种情况的想法吗?以下是我发现的一些可能有用的东西:

  • perform_step 中的计算时间越短,迭代次数越少,事情就会崩溃。
  • 每次经过相同次数的迭代后,事情就会崩溃。
  • 将鼠标移到窗口上可以防止事情崩溃。如果我不断地将鼠标移到窗口上,事情就会永远运行下去。它似乎“重置”了计数器。如果在 10 次迭代后出现故障,并且在第 9 次迭代时我将鼠标移到窗口上,那么在第 19 次迭代时出现故障。

这里是一段代码:

bool SimDisplay::on_button_press_event(GdkEventButton* event) {
Glib::signal_timeout().connect( sigc::mem_fun(*this, &SimDisplay::perform_step), 1000 );
}

bool SimDisplay::perform_step() {
world->step();
//on the last iteration this is called but on_expose_event is never reached
get_window()->invalidate(true);
}

bool SimDisplay::on_expose_event(GdkEventExpose* event) {
...
}

最佳答案

您的 on_button_press_event() 缺少 return 语句;确保所有处理程序都返回正确的内容。

关于c++ - GTK+ : failure after several steps 中的重复窗口失效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8794925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com