基于weston报错: "Could not connect to display"问题的分析及延申

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

背景

基于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中的位置和启动方式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值