问题标签 [xcb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 'void (*return_socket)(void *closure);' 是什么意思 意思是?
我正在浏览 XCB 资源,发现了这个奇怪的结构成员:
这意味着什么?写这个的另一种方式是什么?
java - _XReply() 使用 _XIOError() 终止应用程序
我们正在开发一些复杂的应用程序,它由 linux 二进制文件与我们定制的 .jar 文件中的 java jni 调用(来自在 linux 二进制文件中创建的 JVM)集成。所有的 gui 工作都是由 java 部分实现和完成的。每次必须更改某些 gui 属性或必须重新绘制 gui 时,都是通过 jni 调用 JVM 来完成的。
以 JVM/java 可以处理的速度重新绘制(或刷新)完整的 display/gui。它以迭代和频繁的方式完成,每秒数百或数千次迭代。
在某个确切的时间之后,应用程序被终止exit(1)
,我使用 gdb 来调用它_XIOError()
。这种终止可以在或多或少精确的时间段之后重复,例如在 x86 双核 2.5GHz 上大约 15 小时之后。如果我使用一些速度较慢的计算机,它会持续更长时间,就像它与 cpu/gpu 速度成正比一样。一些结论是 xorg 的某些部分用完了某些资源或类似的东西。
这是我的回溯:
我exit()
在 liboverrides.so 中进行了自己的调用,并将其与 LD_PRELOAD 一起使用,在/SIGABRTexit()
的帮助下捕获 gdb 中的调用。abort()
在对 libX11 和 libxcb 进行了一些调试后,我注意到_XReply()
得到了 NULL 回复(来自 的响应xcb_wait_for_reply()
),导致调用_XIOError()
and exit(1)
。更深入地研究 libxcb in xcb_wait_for_reply()
function,我注意到它可以返回 NULL 回复的原因之一是它检测到断开或关闭的套接字连接,这可能是我的情况。
出于测试目的,如果我更改 xcb_io.c 并忽略_XIOError()
,应用程序将不再工作。如果我在里面重复请求_XReply()
,它每次都会失败,即每个都得到 NULL 响应xcb_wait_for_reply()
。
所以,我的问题是为什么这种不受控制的应用程序终止与 exit(1) from _XReply()
-> XIOError()
->exit(1)
发生,或者我怎样才能找出发生的原因和发生了什么,所以我可以修复它或做一些解决方法。
为了重复这个问题,正如我上面所写的,我必须等待大约 15 小时,但目前我的调试时间非常短,并且找不到问题/终止的原因。我们还尝试重新组织处理 gui/显示刷新的 java 部分,但问题没有解决。
一些软件事实:
- java jre 1.8.0_20,即使使用 java 7 也会重复这个问题
- libX11.so 1.5.0
- libxcb.so 1.8.1
- debian wheezy
- kernel 3.2.0
linux - 如何使用 XCB 或 X11 显示全彩图像?
我可以将 PNG 图像加载到内存中并使用 libpng 从中获取原始像素数据,还可以使用 XCB 或普通 X11 创建具有空白背景的窗口。
接下来我应该怎么做才能在窗口中显示图像?
xlib - 使用XCB时,频繁打开和关闭DISPLAY可以吗?
由于 XIM 和 XFT 的使用,我有时必须在基于 XCB 的代码中使用 XDisplay。
我的问题,我应该在程序开始时打开显示,然后在结束时关闭它。或者每次我需要使用它时打开和关闭?
xcb - 如何使用 XCB 获取窗口的屏幕?
在 Xlib 中,XWindowAttributes 结构包含一个指向窗口所在屏幕的指针。但是在XCB对应的结构体(xcb_get_window_attributes_reply_t)中,并没有这样的成员。
我该怎么办?
c - 随机 libx11 挂起
调用libX11函数时,我的应用程序随机挂起。例如:调用XGetClassHint
,XGetWindowProperty
或者XListInputDevices
有时不返回。
例如,这里是调用时的回溯XGetClassHint
我已经跟踪了我的应用程序和服务器之间的 X11 消息,并且我收到了对 GetProperty 请求的回复WM_CLASS
:
我的应用程序是单线程的,我可以看到仍在从服务器接收和处理 X11 消息,但它看起来永远不会返回,XGetClassHint
因为由于某种原因没有处理 GetProperty 回复。
我使用的操作系统是标准的debian 挤压,相关的包是:
知道可能是什么原因造成的吗?
谢谢!
更新
经过更多调试后,似乎在程序处理 SIGCHLD 时发生了此问题。在信号处理程序中,我只是写入管道以通知主线程,但没有对 libX11 进行任何操作。但最终删除信号处理程序使问题消失了。是否有意义?或者我可以期待这个问题在未来再次出现?
再次感谢
qt - 构建 qt5 xcb 插件时出现 QDBusConnection 错误
我已经在这里搜索了一段时间,但我想我可能错过了答案,在这种情况下,请接受我的道歉。
【前提条件】
我从源代码构建了 Qt 5.3.1,但错过了 ./configure 脚本没有包含 xcb 插件的事实。当然,我现在非常需要它来构建一个 qt5 项目。
[问题]
我发现可以单独构建插件(我不想重新安装 Qt)。我已经苦苦挣扎了几天,现在我只有一个问题:
bridge_p.h:66:5: 错误:“QDBusConnection”没有命名类型 QDBusConnection dBusConnection() const;
查看制作日志
请提出解决方案,谢谢。
c - 为什么在不同结构指针之间进行类型转换是可行的?
此代码片段是从XCB 中事件的最后一个教程示例复制而来的:
在第 5 行中,指针xcb_generic_event_t
被类型转换为指针xcb_expose_event_t
,这是在标准 C 语言中进行此类操作的好方法吗?并请解释它的含义是什么?
c - 给定 Xauthority 文件,调用 xcb_connect_to_display_with_auth_info() 的正确方法是什么?
当我尝试建立与存储在字符串中的给定显示的 XCB 连接时,例如dpy
,我知道我可以通过两种不同的方式来做到这一点:
- 只需调用
xcb_connect(dpy, NULL)
,或 - 将环境变量设置
DISPLAY
为 的值dpy
并调用xcb_connect(NULL, NULL)
。
但是,如果我的 X 服务器需要 Xauthority 文件,我只能在设置环境XAUTHORITY
Xauthority 文件路径然后调用xcb_connect(dpy, NULL)
.
我想建立这个连接而不必设置环境变量XAUTHORITY
。我知道在 XCB API 中有一个函数调用xcb_connect_to_display_with_auth_info()
它接收一个xcb_auth_info_t
结构,但我完全不知道如何在给定 Xauthority 文件路径的情况下构建这个结构。
我怎么能做到?
xlib - 有人有 libxpm 的例子吗?
这是最愚蠢的事情,但我已经尝试过,但我无法使用 libxpm。
我找到了一些代码片段,但很少,而且我发现的是我无法编译的非常旧的代码。
到目前为止,我的理解是我需要:
连接到 x windows 服务器(完成) 创建窗口(完成) 使用 libxpm 从数据创建像素图(未完成) 将像素图复制到窗口(未完成)
如果你碰巧有一个小例子,或者知道把我送到哪里,那就太好了。如果你碰巧知道如何使用 xcb 和 libxpm 那就更好了。xcb 似乎使用整数作为它的连接,而 xlib 使用显示结构,我根本没有找到任何处理 xcb 和 libxpm 的示例,并且连接问题对我来说是一个死胡同。
谢谢阅读