在 Red Hat Enterprise Linux 8.2 上运行 XOpenDisplay 是否有问题?

问题描述

我在 CentOS 7 上编写了一个应用程序,它充当驱动程序,作为服务守护程序运行,其部分工作是使用 X11 XWarpPointer 函数定位鼠标箭头。我让它在 CentOS 7 上成功运行,然后需要将它移植到 RHEL 8.2。 XWarpPointer 函数返回一个成功代码,但没有做任何事情。一些研究似乎表明,这是因为 RHEL 8.2 已将 X11 库替换为名为 Wayland 的库,并且在 Wayland 中 XWarpPointer 无法正常工作。我被告知要编辑 /etc/gdm/custom.conf 文件并取消注释该行:

#WaylandEnable=false

XWarpPointer 现在失败并显示“无效的 MIT-MAGIC-COOKIE-1”消息,

查看 XWarpPointer 的源代码表明这是因为 display 指针为空。事实证明这是真的,因为在代码中的早期 XOpendisplay 函数,它应该返回一个 display*,返回 null。我深入研究了 XOpendisplay 函数以找出它返回 null 的位置。它在调用 _XConnectXCB 函数时似乎是这样做的。反过来,这个函数调用 xcb_connect_to_display_with_auth_info 时似乎失败了。

其他人有类似的问题吗?有谁知道如何让 XOpendisplay 和 XWarpPointer 在 RHEL 8.2 上工作?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)