页次: 1
昨天夜里没事瞎脑洞,想着一个X server跟pulseaudio server合并的服务器。
只给本地用,客户端跟服务端用TCP Unix domain socket连接,然后窗口内容客户端自己渲染到一个memfd里面。连接的时候给服务端送一下这个memfd。窗口事件和声音数据通过连接fd传递,服务端不停的读数据就可以合成桌面并显示或向remote session发送啦。这样窗口内容和声音数据实际上握在客户端手里,不需要依赖服务端就可以产生图像和声音。服务端关了客户端也能返回EIO感知到,可以选择暂停多媒体数据生产,避免无谓的资源消耗。
客户端要关窗口先跟服务端说一声,再传一次这个fd,然后服务端检查到这个fd是服务端已经开过的,会把它那边的fd关掉,然后客户端自己再关掉自己这边那个memfd就行了。服务端还能给客户端用同样的协议发消息,说这个窗口的memfd我强制关闭了,你自己看着办。这样每个memfd的file对应了一个窗口,CS两端都能用,更好的满足了一切皆文件的模型。
最近编辑记录 xtricman (2019-01-05 13:58:33)
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
pulseaudio server 不是能走 tcp 的吗?
离线
pulseaudio server 不是能走 tcp 的吗?
不是啊,就是假设客户端都在本地,走本地pipe通信,主要是那个把memfd当窗口的脑洞啦,这样就不需要服务端啦,服务端死了重新连到别的服务端继续显示窗口。
虽然貌似X org客户端DRM绘图也是可以做到这个功能的…
只是个深夜脑洞而已。砍掉X服务器的绘图功能, ip网络只用于传输最后的混成结果和输入事件,不再有单独的一个client进程运行于别的机器上,别的机器只能像VNC一样连过来 ,看见整个桌面。
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
类似于 tmux 的 detach?
离线
类似于 tmux 的 detach?
不太懂tmux拉,没用过这类东西。
反社会,精神极其不稳定,随时可能炸碎身边所有人
离线
页次: 1