`
jinghuainfo
  • 浏览: 1520838 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

X Window研究笔记(4)

 
阅读更多
X Window研究笔记(4)

转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>

4.X Window的分层视图

X Window是一个严重依赖硬件环境的系统,输入依赖于输入设备,像键盘、鼠标和触摸屏等,输出设备依赖于显卡和显卡提供的接口。为了隔离与硬件的耦合,保持良好的可移植性,分层设计是必然的选择。X Window的分层视图如下所示:

xwindow_layer.


DIX(与底层无关的核心代码): DIX是与平台无关的核心代码,DIX之意可能是指“不依赖任何硬件设备”的代码。它主要包括:


1.对下列资源的管理(有些资源的实现是硬件相关的,但对它们的管理是硬件无关的)。

●Window 提供窗口的创建/销毁,属性修改,和基于树形的管理和遍历操作等。
●Pixmap 是继承DrawableRec的,实现一些像画线这样的基本绘图操作。
●Screen 是对显示设备的抽象,一个Card可以有多个Screen,DIX提供像AddScreen和FreeScreen等函数管理Screen。
●Device 主要是指对输入设备,像键盘、鼠标和触摸屏的管理。
●Colormap 调色板的创建/销毁,修改和查询等操作。
●Font为客户端应用程序提供字体管理,比如打开/查询/显示/关闭字体等操作。
●Cursor 光标的创建/销毁。
●Graphics Contexts绘图上下文,包括像字体,颜色,线条类型等信息,提供GC的创建/销毁和修改属性等操作。

2.处理客户端的请求。

3.输入事件的分发。

这一部分的代码主要集中programs/Xserver/dix目录下。

EXT(扩展功能) :可以认为X Window的大部分功能特性都是在扩展中模块实现,这样可以根据需要进行裁剪。X Window提供大约40来个扩展模块。

  1. Panorami:在公共场合和电视台常常需要超大屏幕的显示器,像一堵墙一样,要生产这样显示设备成本高,制造难度大,一般取而代之的方案是,用多个显示器拼装起来,比如,用16个显示器可以拼装出4x4的显示矩阵。本扩展模块的功能就是让一台机器上支持多个显示器,并把显示数据送到相应的显示器上。
  2. Bezier:我们都知道像TrueType之类的矢量字体都是靠Bezier曲线来圆滑其线条的。本扩展模块可能就是做这件事的,不过好像X Window中并没有使用它。
  3. Shape:大多数时候,我们看到的窗口都是一个方块,对一般用户来说并不是什么障碍,而在有时候,像一个娱乐性的软件,需要把窗口做成奇形怪状的,以增加对用户的吸引力。Shape扩展提供了一些功能用来创建非矩形的窗口。
  4. Shm:X Window和客户端程序之间一般只是传递一些参数,数据量不大,对性能不会造成太大的影响。但有时可能要传递一些大块数据,比如说像图片,对性能就有较大明显的影响了,Shm扩展提供了共享内存的支持,以避免大块数据的传输。
  5. EVI:X Window的Core服务提供了获取Visual的基本信息,有时候这些基本信息对客户端程序来说,是不够充分的。于是就出现了EVI(extended visual info)。
  6. Pex: 不知是什么东西,没有找到相关的文档和源码。可能是一个过时的扩展吧。
  7. Multibuffer:提供多缓冲区。
  8. XInput:扩展输入设备。提供对键盘鼠标等之外的输入设备的支持。
  9. XTest:测试扩展模块。除了测试之外,还可以用来支持软件键盘等虚拟输入设备。
  10. BigReq: X Window本身对请求包的数据大小是有限制,通过这个扩展模块可以支持大的数据包。
  11. MITMisc:一些杂项功能的扩展。就提供了两个功能X_MITSetBugMode/ X_MITGetBugMode。
  12. ScreenSaver: 支持屏幕保护功能。
  13. Xv:提供对视频播放如DVD、MPEG的支持和优化。
  14. XvMC提供对视频播放如DVD、MPEG的支持和优化。
  15. Sync:提供对多个客户端进行同步的机制。
  16. Xkb:键盘扩展。不清楚到底扩展什么。
  17. XCMisc: 杂项功能。
  18. Record:它可以把X Window的事件和请求都记录下来,主要用于测试目的。
  19. Lbx:Fast Server.
  20. Dbe: 双缓冲支持。
  21. Xag:应用程序分组管理。X Window只知道窗口之间的父子兄弟关系,并不知道这些窗口属于哪个应用程序。本扩展模块可以把窗口按AP分组。
  22. Security:提供安全扩展,即认证机制。
  23. Xp:打印功能。
  24. Xcup:对颜色映射的支持。
  25. DPMS:显示电源管理。
  26. FontCache:字体缓存。
  27. XFree86Bigfont: 大字体支持。
  28. XFree86VidMode: 显示模式管理。
  29. XFree86Misc:杂项功能。
  30. XFree86DGA:显示加速功能。
  31. XFree86DRI:直接渲染。
  32. Glx:OpenGL支持。
  33. DarwinGlx:Darwin的OpenGL支持。
  34. DPS: Display Postscript,没有找到相关的文档和源码。
  35. Render: 渲染扩展,增强X Window的画图功能。
  36. RandR:对窗口的旋转和调整大小支持。
  37. Res:资源管理支持。
  38. DMX: Panorami要求所有显示器连接在一台电脑上,这常常有些难度,DMX允许这显示器在不同的机器上。

扩展模块的初始化是在miinitext.c里完成的,在函数InitExtensions中,它会把所需要的模块一一初始化。

OS(与特定OS相关的代码): 这一部分主要包括如下功能:
  1. Scheduling and Request Delivery
  2. New Client Connections
  3. Reading Data from Clients
  4. Sending Events, Errors And Replies To Clients
  5. Font Support
  6. Memory Management
  7. Client Scheduling
  8. Other OS Functions
  9. Idiom Support

DDX(与设备相关的代码):所有与设备相关的功能,都是集成在X Server中的,客户端程序只知道”事件”, 而不知道设备的存在。关于输入和输出设备,在后续的章节中,我们会做专门的介绍。

(待续)

分享到:
评论

相关推荐

    X Window研究笔记

    X Window研究笔记 虽然X Window是一个非常复杂的系统,但只要静下心来分析,通常遇到的问题也是很容易解决的,前年我花了一段时间去研究X Window的实现,我发现了解它的实现后,很多问题都迎刃而解了

    X-window简略笔记

    X-window简略笔记

    X-Window程式设计入门 教程

    X Window 程式设计入门--第一章 什么是 X Window X Window 程式设计入门--第二章 X Programming 的第一步 X Window 程式设计入门--第三章 绘图(Graphic) X Window 程式设计入门--第三章 绘图(Graphic) X Window 程...

    Xwindow程序设计入门

    Xwindow程序设计入门,网上收藏,很好的资料,对了解xwindow编程很有帮助

    X Window 系统使用指南

    X Window System 是一套在各种位元映像显示器 (bitmapped dispalys) 上具有极大可携性 (portable) 的视窗系统 (window system), 它是由麻省理工学院 (MIT)所发展出来. X Windows System ( 本书以後部 份简称为...

    OpenGL for x window (1)

    This practical guide shows X programmers how to construct working 3D applications using OpenGL and how to tightly integrate OpenGL applications with the X Window System. Written by a Silicon Graphics...

    X window 直接渲染架构

    描述X window 直接渲染架构的概念,实现

    X window介绍及启动流程

    对Linux操作系统的桌面环境软件X window的介绍及启动流程

    xwindow程序设计相关资料

    X Window System 是一套在各种位元映像显示器 (bitmapped dispalys) 上具有极大可携性 (portable) 的视窗系统 (window system), 它是由麻省理工学院 (MIT)所发展出来. X Windows System ( 本书以後部 份简称为...

    Linux与X Window系统基础

    Linux与X Window系统基础 Linux与X Window系统基础

    Linux下X-Window系统程序设计简介.pdf

    Linux下X-Window系统程序设计简介.pdf

    X Window 用户指南

    这个文档为Linux用户提供了一些基本的关于理解和配置X-Window系统的信息。 这只是一个入门级别的文档。假设已经有了一个安装好的并且正在工作的 X-Window系统。

    window manager for x

    window manager for x window manager for x window manager for x

    X-Window介绍

    关于X window的介绍。让你了解并熟悉X window。

    xwindow相关包

    Xwindow 是一个非常出色的图形系统,你应该抱怨的是那些不稳定的包装,而不是 Xwindow 本身。

    Xming-X window 工具

    Xming, windows操作系统连接Linux, Unix的x window 工具。

    Window批处理命令学习笔记

    Window批处理命令学习笔记,批处理实用简小工具

    X Window架构与启动代码分析

    一份课程报告,介绍了X-Window的架构体系,并对启动代码做了分析

Global site tag (gtag.js) - Google Analytics