将 SDL 嵌入 GTK+

2023-12-11

我有一个使用 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) {
            /* ... */
        }
    }
}

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

在我将 SDL 集成到 GTK+ 之前,这段代码曾经运行良好,所以我认为 GTK+ 可能在某些方面阻止了 SDL?

请问有人有什么建议吗?

非常感谢!


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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SDL 嵌入 GTK+ 的相关文章

随机推荐

  • Google Actions sdk 无法从 Firebase 存储中播放 ssml 中的音频

    Google Actions SDK 无法从 Firebase 存储播放 SSML 音频标记中的音频文件 虽然我可以播放维基百科上相同的 ogg 格式文件 https upload wikimedia org wikipedia en 9
  • CSS媒体查询处理新的高分辨率手机,同时忽略平板电脑

    根据我的研究 新款智能手机人像分辨率高达800px平板电脑最低纵向分辨率 600px 现在 我尝试使用媒体查询将移动 css 渲染到支持高达 800px 分辨率的手持设备 但我遇到的问题是旧平板电脑 例如具有 768px 纵向分辨率的 ip
  • 如果用户在java中关闭浏览器,如何清除httpsession

    如果消费者关闭浏览器窗口 我试图清除 HttpSession 我不知道该怎么做 请帮助我 感谢和问候 却克里 如果您可以让浏览器 可靠地 通知服务器用户已关闭窗口 那么服务器可以调用session invalidate 根据 ejay fr
  • 快速改变图像的色调

    I am new to swift and trying to achieve this essentially This image to 这张图片 gt 我正在使用这个代码从这里更改图像的色调但未获得所需的输出 func tint im
  • 使用 h5py 沿新轴将数据添加到现有 h5py 文件

    我有一些生成 3d Numpy 数组的示例代码 然后我使用 h5 文件将此数据保存到 h5py 文件中 然后我如何沿着第四维 附加 第二个数据集 或者 我如何沿着现有的第四维 或新轴 编写另一个 3D 数据集 h5文件 我已经阅读了我能找到
  • 如何在 Google App Engine 中使用自定义 Python 库和应用程序?

    我想知道如何在 Google App Engine 的 django nonrel 中安装和使用第三方库和 或应用程序 目前我的 Web 应用程序使用 django nonrel 我想安装 github 中提供的一些库 通常 库需要通过 p
  • 获取用户详细信息、计算年龄并显示所有信息的程序

    我启动了一些代码 但在将用户字符串输入保存到变量中时遇到问题 使用 ReadString 我可以提示用户输入字符串 但是将用户输入保存到名为 AskName1 的变量中 然后显示 AskName1 中保存的信息后 我发现它保存了用户输入的字
  • R中使用循环处理文件夹中的所有文件

    我需要处理一个文件夹中的所有文件 并且文件是按顺序命名的 所以我认为这是循环的好时机 处理单个文件的代码很简单 df lt read table CLIM0101 WTG skip 3 header TRUE df lt df 1 df y
  • Spring Security:在 SecurityContext 中找不到 Authentication 对象

    以下配置 filterChain 在 SpringBoot 2 7 5 中工作正常 但在我尝试在 SpringBoot 3 0 0 RC1 中测试它之后 它不起作用并显示以下消息 如果想要迁移 我需要更改任何内容到 Spring Boot
  • Windows 10 中的 Android AVD 模拟器缩放问题

    我在 Windows 10 Android Studio 2 3 3 上 我创建了一个具有以下配置的 android avd 但显示屏无法正确缩放 显示屏仅在一个角落 Name 4 WVGA Nexus S API 23 CPU ABI G
  • ListView可以在ExpandableListView里面吗?

    我们可以在 ExpandableListView 中包含 ListView 吗 这样我就可以首先拥有组级别 然后拥有子级数组 listView 我已经完成了列表视图课程 它工作得很好 但如何调用可扩展列表视图中的每个组来显示列表视图 布局
  • 这在 PHP 中意味着什么:-> 或 =>

    我一直在 PHP 中看到这些 但我不知道它们的实际含义 什么是 gt 做什么以及做什么 gt 做 我不是在谈论运营商 它们是别的东西 但似乎没有人知道 The 双箭头运算符 gt 用作数组的访问机制 这意味着在数组上下文中 其左侧的值将具有
  • R:将XML数据转换为数据框

    对于家庭作业 我试图将 XML 文件转换为 R 中的数据框架 我尝试了许多不同的方法 并且在互联网上搜索了一些想法 但没有成功 到目前为止 这是我的代码 library XML url lt http www ggobi org book
  • 通知等待模式的C++多线程算法设计

    我正在寻找以下算法在 Windows 上的多线程实现的建议和代码示例 主题1 采取input1 做工作 通知Thread2 继续工作 主题2 采取input2 做工作 等待来自thread2的通知 做一些处理 通知Thread3 继续工作
  • WKWebView:是否可以预加载多个URL?

    刚刚将应用程序迁移到WKWebView想知道是否有任何可能的方法来 预加载 多个 URL 但一次只显示一个 我有 5 个 URL 的列表 我已经知道我会在某个时间点显示 并且我想通过预加载这些内容以在单个时间点中使用来加快体验速度WKWeb
  • Scala Futures:每个新创建或映射的异常的默认错误处理程序

    是否有可能始终使用默认的 onFailure 处理程序创建 Future 块 例如将堆栈跟踪写入控制台 该处理程序还应该自动附加到映射的 future 通过在已经具有默认故障处理程序的 future 上调用映射创建的新 future 另请参
  • 为什么我不能使用 Start-Process 来调用带参数的脚本?

    我正在尝试在 Powershell 中编写一个包装器脚本 该脚本传递可执行文件的名称 进行一些预处理 然后使用该预处理产生的参数调用该可执行文件 我希望可执行文件是可以在 Windows 上运行 打开的任何内容 所以我想使用Start Pr
  • 自引用多对多递归关系代码优先实体框架

    我似乎根本无法完成这项工作 class Member public virtual IList
  • 使用jQuery在IE10中动态提交文件上传表单

    我有一个表单 其唯一目的是上传文件 但出于用户体验的原因 我需要一个漂亮的按钮 加载文件对话框 选择文件后自动提交表单 原来的解决方案是这样的这个 JSFiddle 其中有一个加载文件对话框的链接 然后监听该对话框的change自动提交表单
  • 将 SDL 嵌入 GTK+

    我有一个使用 GTK 来显示一些漂亮的 GUI 的应用程序 但我使用 SDL 在 GTK 内显示一个小的 RGB 帧缓冲区 我使用以下代码将 SDL 引入 GTK char SDL windowhack 32 sprintf SDL win