背景
基于weston使用qt或者gtk等UI框架显示应用程序的时候,需要明确是wayland平台还是x11平台,然后在run weston的时候选择合适的参数。
某些情况下在weston下运行demo时候会报错:Could not connect to display,通常网上的分析和采用的方法如下所示:
该错误是由于在远程或者串口终端环境下没有正确设置DISPLAY导致的。
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处。直接登陆图形界面或者登陆命令行界面后使用startx启动图形, DISPLAY环境变量将自动设置为:0.0, 此时可以打开终端, 输出GUI程序的名称来启动程序, 图形将显示在本地窗口上, 在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:
DISPLAY=:0.0
解决办法:
export DISPLAY=':0.0'
但是在weston下通过该方法有时候不能够解决问题呢?需要看下面进一步分析,只有适合的配置才能在weston下使用X应用,也才会出现X11系统下的DISPLAY参数
wayland框架
首先看一下wayland协议的整体框架,如图1所示。我们使用的weston是属于wayland compositor的参考实现。从图1中分析可知,wayland应用和x11应用都可以运行在weston,但是x11的应用程序需要通过xwayland模块将x11协议转为wayland协议与wayland compositor通信。与X11相比wayland最大的不同便是client可以自己通过EGL调用3D渲染库来渲染自己的界面,然后通过共享内存compositor即可获得client端的渲染数据,通过compositor合成渲染之后送output端。output端对接的绝多数情况都是基于drm的显示框架,通过drm将显示数据发送到panel。

图1 wayland框架
然后分析xwayland和weston的对接,有了xwayland模块,就可以在weston上无缝运行基于x11的应用。xwayland的module与weston的对接框架如图2所示:

图2 xwayland在weston中的位置和启动方式

本文详细解析了在Weston环境下如何同时支持Wayland和X11应用,阐述了weston.ini配置文件的作用,以及如何通过正确设置DISPLAY和WAYLAND_DISPLAY环境变量来解决显示问题。
最低0.47元/天 解锁文章
4777

被折叠的 条评论
为什么被折叠?



