0

我目前正在编写一个可由 Wayland 客户端软件使用的库。该库旨在大部分独立于客户端工具包(目前​​只有 Qt,但其他支持 Wayland 的工具包也应该能够使用它)。它只需要一个wl_display传递给初始化例程的指针,它是从 GUI 工具包中检索的。初始化完成后,库应该能够在不接触工具包的情况下工作,以使其跨工具包兼容。

当我的库需要几个全局对象代理(即。wl_output)时,就会出现问题。该库使用自定义wl_registry将自定义代理绑定到所需的全局对象。但是,从服务器的角度来看,这些对象的所有代理都是等效的。当服务器发送包含对象代理的事件时,它们可能包含工具包或库的代理引用。这会导致问题,因为没有简单的方法来区分这些。当工具包接收到此类事件时,它一味地假设代理的用户数据属于工具包并使用它,即使它接收到的代理属于我的库。

有没有办法协调这种不相关的代码,或者这种使用超出了 Wayland 库/协议的范围,我应该重新设计我的解决方案?

4

1 回答 1

0

Qt Wayland 开发人员在这里。

当工具包接收到此类事件时,它一味地假设代理的用户数据属于工具包并使用它,即使它接收到的代理属于我的库。

你确定这部分?当您绑定到全局时,您会创建一个新的代理对象,我看不出工具包如何知道这一点……或者您是在谈论全局发送的事件中的参数。即wl_pointer.set_cursor之类的?如果您能更具体地说明出了什么问题,那就太好了...

于 2019-03-18T07:53:45.833 回答