gpt4 book ai didi

c - 将 SDL 嵌入 GTK+

转载 作者:太空狗 更新时间:2023-10-29 15:33:33 26 4
gpt4 key购买 nike

我有一个应用程序使用 GTK+ 来显示一些漂亮的 GUI,但我正在使用 SDL 在 GTK+ 中显示一个小的 RGB 帧缓冲区

我使用以下代码将 SDL 导入 GTK+:

char SDL_windowhack[32];
sprintf(SDL_windowhack, "SDL_WINDOWID=%ld", GDK_WINDOW_XWINDOW(deviceWindow->window));
putenv(SDL_windowhack);

不幸的是,我还使用 SDL 处理键盘和鼠标事件。使用 SDL 更新图像的主线程产生以下线程:

void *SDLEvent(void *arg)
{
SDL_Event event;

while (1) {
fprintf(stderr, "Test\n");
SDL_WaitEvent(&event);
switch (event.type) {
/* ... */
}
}
}

我看到打印语句执行了两次,然后没有。一旦我终止 SDL 用于更新屏幕(显示)的线程,SDLEvent 中的循环就会再次开始非常快速地执行。

在我将 SDL 集成到 GTK+ 之前,这段代码工作正常,所以我认为 GTK+ 可能在某些方面阻止了 SDL?

请问大家有什么建议吗?

非常感谢!

最佳答案

虽然我没有使用过 SDL,但是当您正在寻找事件时,您似乎正在运行两个事件循环。 Gtk 运行它自己的事件循环来处理来自鼠标和键盘的事件。我认为你需要找到一种方法来整合两者。一些谷歌搜索导致以下 link在“双事件循环问题”部分中,您的问题已得到解决(我认为)。尝试使用 g_idle_add 添加 SDLEvent 函数作为空闲函数正如 link 中所建议的那样看看它是否有效。
希望这对您有所帮助!

关于c - 将 SDL 嵌入 GTK+,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8145806/

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