我目前正在编写一个可由 Wayland 客户端软件使用的库。该库旨在大部分独立于客户端工具包(目前只有 Qt,但其他支持 Wayland 的工具包也应该能够使用它)。它只需要一个wl_display传递给初始化例程的指针,它是从 GUI 工具包中检索的。初始化完成后,库应该能够在不接触工具包的情况下工作,以使其跨工具包兼容。
当我的库需要几个全局对象代理(即。wl_output)时,就会出现问题。该库使用自定义wl_registry将自定义代理绑定到所需的全局对象。但是,从服务器的角度来看,这些对象的所有代理都是等效的。当服务器发送包含对象代理的事件时,它们可能包含工具包或库的代理引用。这会导致问题,因为没有简单的方法来区分这些。当工具包接收到此类事件时,它一味地假设代理的用户数据属于工具包并使用它,即使它接收到的代理属于我的库。
有没有办法协调这种不相关的代码,或者这种使用超出了 Wayland 库/协议的范围,我应该重新设计我的解决方案?