SDL窗口似乎不正确地被操作系统标记为“无响应”

时间:2013-08-11 00:13:42

标签: linux ubuntu sdl d derelict3

我有一个通过Derelict 3访问的SDL2窗口窗口。

它应该闪耀黑白(不是因为我讨厌癫痫症),它成功地做到了这一点。然而,经过一段时间后,Ubuntu 13.10将窗口标记为“无响应”,将其灰化,并使频闪效果变钝。

这极具刺激性,完全杀死了视觉刺激应用程序所需的效果,可以从我的EEG耳机中检索SSVEP读数。

如何让我的操作系统意识到窗口正在做它应该做的事情?

代码

由于我已经在我的实际代码中包装了SDL调用,我将提供伪代码和在这些部分中调用的SDL方法(我已经检查过我调用任何其他SDL功能):

make a window using SDL_CreateWindow (no set flags)
make a renderer using SDL_CreateRenderer (with presentvsync flag set)
for( ... )
{
  fill screen black using SDL_RenderFillRect and SDL_SetRenderDrawColor
  update screen using SDL_RenderPresent
  fill screen white (same as above filling)
  update screen (same as above update)
}
exit

我迂腐地检查错误代码并返回包装器lib中所有SDL调用的值。他们都很好。我需要知道的是我必须添加的内容才能为我的操作系统提供心跳,以便它不会让我的窗口变灰。

另一件事......

有人可以添加SDL2标签吗? SDL2与SDL1.2 ...

的API非常不同

2 个答案:

答案 0 :(得分:3)

通过SDL_PollEvent(null)将事件处理添加到循环中。这使操作系统满意。

答案 1 :(得分:1)

对于使用Ubuntu 16.04和SDL2.0x的任何人- 对我有用的解决方案是:

SDL_SetHint(SDL_HINT_VIDEO_X11_NET_WM_PING,"0");

在您的SDL_Init()之后立即设置;呼叫。 参见:SDL2 wiki here.