Wayland 源码解析之代码结构
来源:http://blog.csdn.net/basilc/article/details/8074895
获取、编译 Wayland 及其依赖库可参考 Wayland 官方网站的 Build 指南:http://wayland.freedesktop.org/building.html。
Wayland 实现的代码组成可以分成以下四部分:
1. Wayland 库
Wayland 中最核心的部分,Wayland 协议的大部分实现位于这里。
1) 工具程序(wayland-scanner)
分析 Wayland 协议文件,并生成相应的头文件及代码文件。
源码文件列表:
wayland/src/scanner.c
2) 工具库
供其他库、程序使用的工具函数、接口、结构等。
源码文件列表:
wayland/src/connection.c
wayland/src/wayland-util.c
wayland/src/wayland-util.h
wayland/src/wayland-os.c
wayland/src/wayland-os.h
wayland/src/wayland-private.h
3) Client 库
供 Client 使用的桩接口(stub interfaces)及 event listener 结构定义。
源码文件列表:
wayland/src/wayland-protocol.c
wayland/src/wayland-client.c
4) Server 库
Wayland 核心协议的实现。
源码文件列表:
wayland/src/wayland-protocol.c
wayland/src/wayland-server.c
wayland/src/wayland-shm.c
wayland/src/data-device.c
wayland/src/event-loop.c
5) Cursor 库
Cursor 相关功能的实现。不作为重点分析部分。
源码文件列表:
wayland/cursor/wayland-cursor.h
wayland/cursor/wayland-cursor.c
wayland/cursor/os-compatibility.c
wayland/cursor/os-compatibility.h
wayland/cursor/xcursor.c
wayland/cursor/xcursor.h
6) 公用头文件
wayland/src/wayland-util.h
wayland/src/wayland-server-protocol.h
wayland/src/wayland-server.h
wayland/src/wayland-client-protocol.h
wayland/src/wayland-client.h
wayland/src/wayland-version.h
wayland/src/wayland-egl.h
2. EGL 相关实现
EGL surface 与 Waylandsurface 之间的互相转换,代码位于 mesa 中。
1) libEGL 中的代码
mesa/src/egl/drivers/dri2/platform_wayland.c
mesa/src/egl/wayland/wayland-drm/wayland-drm.c
mesa/src/egl/wayland/wayland-drm/wayland-drm-protocol.c
mesa/src/egl/wayland/wayland-drm/wayland-drm-client-protocol.h
mesa/src/egl/wayland/wayland-drm/wayland-drm-server-protocol.h
2) libwayland-egl
mesa/src/egl/wayland/wayland-egl/wayland-egl-priv.h
mesa/src/egl/wayland/wayland-egl/wayland-egl.c
3. Weston (WaylandCompositor 的参考实现)
1) Compositor
合成器的一个参考实现,代码较多,选取几个关键部分进行分析,如事件处理、图形输出等。
重点分析的源码列表:
weston/src/compositor.c
weston/src/compositor-drm.c
weston/src/evdev.c
2) Shell (作为Compositor的插件实现)
可以认为是一个窗口管理器或桌面管理插件。
重点分析的源码列表:
weston/src/shell.c
3) Clients
客户端程序,如 Terminal 等。不作为重点分析,仅在分析交互流程时,选取关键代码段进行分析。
4. 协议
一系列的 XML 文件,定义 Wayland的核心协议及扩展协议。
核心协议:
wayland/protocol/wayland.xml
mesa/src/egl/wayland/wayland-drm/wayland-drm.xml(很重要,可以认为是核心协议)
扩展协议(不作为重点分析对象):
weston/protocol/desktop-shell.xml
weston/protocol/tablet-shell.xml
另外还有一些单元测试代码,位于 wayland 和weston 的tests 目录,主要用来测试通用的 utility 函数,查看这些代码对理解 utility 函数的用途是很有帮助的。
转载于:https://www.cnblogs.com/cnland/archive/2013/01/15/2861319.html
Wayland 源码解析之代码结构相关推荐
- jquery源码解析:代码结构分析
本系列是针对jquery2.0.3版本进行的讲解.此版本不支持IE8及以下版本. (function(){ (21, 94) 定义了一些变量和函数, jQuery = function() ...
- storm源码之storm代码结构【译】
说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助 ...
- 链表node中保存的是什么_Redis源码解析一 --链表结构
Redis源码剖析-链表结构 1. redis中的链表 在redis中链表的应用非常广泛,例如列表键的底层实现之一就是链表.而且,在redis中的链表结构被实现成为双向链表,因此,在头部和尾部进行的操 ...
- yolo源码解析(1):代码逻辑
一. 整体代码逻辑 yolo中源码分为三个部分,\example,\include,以及\src文件夹下都有源代码存在. 结构如下所示 ├── examples │ ├── darknet.c(主程序 ...
- [pytest源码3]-pluggy代码结构与核心设计
前言 现在我们开始分析,按照demo代码顺序先进行简单分析. 个人拙见,有错请各位指出. 如果的我的文章对您有帮助,不符动动您的金手指给个Star,予人玫瑰,手有余香,不胜感激. GitHub plu ...
- YOLOv3源码解析2-数据预处理Dataset()
YOLOv3源码解析1-代码整体结构 YOLOv3源码解析2-数据预处理Dataset() YOLOv3源码解析3-网络结构YOLOV3() YOLOv3源码解析4-计算损失compute_loss( ...
- Block源码解析和深入理解
Block源码解析和深入理解 Block的本质 Block是"带有自动变量值的匿名函数". 我们通过Clang(LLVM编译器)来将OC的代码转换成C++源码的形式,通过如下命令: ...
- vue cli3源码解析
vue-cli3 源码解析 脚手架代码入口点 从package.json文件中可以看到"vue-cli-service": "bin/vue-cli-service.js ...
- Andromeda 源码解析 (同步获取服务)
Andromeda Andromeda是爱奇艺开源的适用于多进程架构的组件通信框架. github地址: https://github.com/iqiyi/Andromeda 其特点如下: 无需开发者 ...
最新文章
- SAP WM LQ02 为供应商寄售库存去K的时候,如果有Open TO单,则不能成功为物料去K?
- 使用Zabbix自带MySQL模板监控MySQL
- DataGrid Web Control 连载之九
- python排名上升_TIOBE:2019年7月全球编程语言排行 Python热度继续上升
- element ui 菜单右侧展开_Elementui Vue 菜单固定展开的问题
- 如何生成有向图_八十六、从拓扑排序探究有向图
- 在互联网上,没有人知道你是一条狗?
- Color-UI 简介及使用教程
- 【ATSC】ATSC数字测试专用ATSC Frequency
- 怎样在Word2010中新建样式
- JS网页特效实例:动态关闭页面
- 1024购书狂欢节,优惠券送给有需要的伙伴们
- 华为设置android系统提醒功能,华为手机短信不提醒怎么办?华为手机短信提醒设置方法...
- 挑战杯获奖作品_创新筑梦济南大学“挑战杯”获奖作品展示(二)
- 计算机机房管理员需要学什么,机房管理员工作内容
- python open encoding=utf-8_Python 文件操作中的读写模式:open(path, '-模式-',encoding='UTF-8')...
- Android adb.exe程序启动不起来 具体解决方法
- kinect手语_婴儿手语2.0-14个月更新
- Linux系统下定时关机命令shutdown
- Pip 安装,卸载,更新安装包