(计算机系统结构专业论文)heterosis:一种基于xcb的新型窗口管理器.pdf_第1页
(计算机系统结构专业论文)heterosis:一种基于xcb的新型窗口管理器.pdf_第2页
(计算机系统结构专业论文)heterosis:一种基于xcb的新型窗口管理器.pdf_第3页
(计算机系统结构专业论文)heterosis:一种基于xcb的新型窗口管理器.pdf_第4页
(计算机系统结构专业论文)heterosis:一种基于xcb的新型窗口管理器.pdf_第5页
已阅读5页,还剩118页未读 继续免费阅读

(计算机系统结构专业论文)heterosis:一种基于xcb的新型窗口管理器.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

r 6 , 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工 作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地 方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含 为获得电子科技大学或其它教育机构的学位或证书而使用过的材料。 与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明 确的说明并表示谢意。 签名:羔蝗吼二:解月多日 论文使用授权 本学位论文作者完全了解电子科技大学有关保留、使用学位论文 的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁 盘,允许论文被查阅和借阅。本人授权电子科技大学可以将学位论文 的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或 扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:世翩签名:查塑 日期:z 口口年占月;日 岛 & 0 , r , 摘要 摘要 在计算机科学中,窗口管理器( w i n d o wm a l l g e r ) 是指一种用于在图形用户界 面( g u i ) 中控制窗口系统( w i l l d 0 诵n gs y s t e m ) 中各窗口位置和外观的软件。大 部分的窗口管理器被用于为某种桌面环境( d e s k t o pe n v 的m 嘣) 提供支持。窗口 管理器一般用控件工具包( w i d g e tt 0 0 n d t ) 编写而成,并且需要与其下层的窗口 系统协同工作,而窗口系统则为其提供诸如图形硬件,指点设备和键盘等底层支 持。 本文首先介绍了当代三大桌面操作系统平台上窗口管理器的现状,并简要介 绍了窗口管理器的发展历史,分析了当今窗口管理器的各种类型,特性以及功能。 在三大桌面操作系统当中,x 窗口系统( xw i i l d o ws y s t c m ) 是绝大部分类u n 操作系统平台上的图形子系统。本文接着介绍了其发展历程,设计原则,并着重 分析了其底层的窗口协议( w 证d o wp r o t o c 0 1 ) 的通信过程和主要数据结构。 传统上,几乎所有基于x 窗口系统的窗口管理器都是使用i b 作为其底层的 图形程序库。但i b 的历史久远,其在设计与实现上也都有一定的缺陷。而2 0 0 1 年出现的x c b ,正好成为了i b 的一个更优的替代品。 在本文的后续部分中,分别对i b 和x c b 进行了介绍,分析了它们的数据类 型和a p i 函数,以及各自的优缺点,并给出了) ( 1 i b 同x c b 的应用程序实例,而 且重点对二者请求应答往返时间的性能进行了详细的定量对比和分析,结果显示 x c b 的时间性能较i b 大约高出3 0 倍,且差距随着请求数量的增加而加大。 在众多的窗口管理器之中,“,i n 是一种基于x 窗口系统且开放源代码的动态 窗口管理器。在此前提之上,d 砌被选定作为代码基础,以实现一种新的窗口管 理器- h e t e r o s i s 。它将弧,i n 从传统上常用的i b 程序库移植至x c b 之上,进 而提高了其性能。 本文在后续的部分中,描述了h e t e r o s i s 的整个实现过程,包括d 眦的现有设 计,h e t e r o s i s 的版本控制方法,逻辑流程,具体的移植方法,实现过程中所遇到 的问题和解决方法,以及调试过程等等,并给出了源代码说明和清单。最后给出 了对于窗口管理器在设计上的展望,以及h e t e r o s i s 其今后可以改进的地方。 关键词:窗口管理器,x 窗口系统,撕n ,h e t 啪s i s ,i b ,x c b 小 r i , l i a b s t r a c t aw i n d o wm a i l a g c ri ss y s t e ms o m y a r e 也a tc o n t r 0 1 s 也ep l a c 锄e n t 孤d 印p e a r a l l c e o f 诎d o w sw i t h i na 、) l ,i n d o w 吨s y s t e mi i la 伊础l i c a lu s e ri n t e r f 犯e m o s tw i n d o w m a n a g e r s a r ed e s i 伊e dt 0h e l pp r o v i d ead e s k t o pe n 、,i r 0 衄e n t t h e y w o r ki n c o n j l l n c t i o n 妣吐l e1 1 n d 甜y i n g 黟a 1 蛳c a ls y s t c mw h i c hp r o v i d e s 似l u i r e d 劬c t i o n a l 时 s u c h 嬲吼l p p o nf o r 乒a p h i c sh a r d w a r e ,p 6 础n gd 耐c e s ,狃da k e y b o 矾,狃d a r eo 慨 w r i t t e na n d 凹e a t e du s i l l ga 、) i ,i d g e tt o o i k i t ht 1 1 i sd i s s e 献i o n ,m e 伽瞳t e n ts i t u a t i o no f 、析n d o wm 观a g e r0 n 也e3m o s tp o p u l a r m o d e md e s h o p 叩蹦咖gs y s t e m si si n 仃o d u c c df i r s t l y t h eh i s t o 巧o f w i n d o wm a n a g e r i s 西v e n 嬲w e l l ,t 1 1 c nt h et y p e s ,f e a n 鹏s 趾df h n t i o n so fm o d e m 、7 l ,i n d o wm 锄a g e r a r c 觚a l y z c d a m o n gm et h i 优o s e s ,也ex w i i l d o ws y s t e mi s 也e 蓼印h i cs u b s y s t e mo n a l i i l o s te v e r yi j l q i x | l i k ep l a t f o m ,w l l i l ei t sh i s t o r y 眦dd e s i 印p 咖c i p l ea r e 枷哟d u c e d m e n t h e 姐a l y s i so fi t s1 0 w e rw i n d o wp r o t o c o l ,州c hc o n t a i l l sc 0 删皿u n i c a t i o np r o c e s s a n dm a i nd a t at y p e s ,i sa l s o 西v c n t r a d i t i o n a l l y ,a l m o s tc 、r e 巧丽n d o wm a n a g e r 、) l 衄c hb a s e s0 nx w i n d o ws y 嗽髓 t a k e s i b 硒i t sl o wl e 、,e 1 莎a p h i c1 i b 砌哆h o w e v b e c a u s eo f i b s1 0 n gm s t o t h e r c a r es o m el m o 、) l ,nd e f e c t si l lt l l ed e s i 弘锄di m p l e m e n t 撕o n h o w e v x c bc 锄e o u ta t 2 0 0 1 ,砌c hi sb e c o m i n g ab e t t c rr 印1 a c e m e n to f i b i nt 1 1 el a t e rp 砒o fm i sd i s s e r t a t i o n ,i ba n dx c ba r ci n 缸d d u c e ds 印a r a t c l y m d r d a t at y p e s ,a p i s ,p r o sa n dc o n sa r ca l s od e s 甜b e d t h e ni n s t 趾c e so ft h e i ra p p l i c a t i o n a r eg i v e n ,趾dar o u n d _ 缸碴p e r :f 0 1 m a n c e s 觚a l y s i s 趾dc o n l p 撕s o ni s e x e c u t e db e 咐e e n m et 、7 l ,o1 i b r 撕e s ,w h i c ht e l l sm a tm en 删x c b i sa b o u t3 0t i m e sf 弛rm a i lm eo l d i b a m o n gs u c hm a n yw i n d o wm a n a g e r s ,d 、mi s a1 i g h tw e i g h ta n d0 p e i ls o u r c e w i l l d o wm a n g e ro nx w i n d o ws y s t i 昌m b a s i i l go nt l l e s ef a c t o r s ,d w mi sc h o s e na sa b a s i st 0i m p l e i n e n tan e ww i l l d o wm 猢g e r h e t 啪s i s np 砥sd w m 舶m t r a d i t i o n a l i bt on e w e rx c b ,w h i c hb o o s t si t sp e r f 0 珊a i l c e ht l l el a s t 阳no f 日1 i sd i s s e r c a l t i o n ,m ew h o l ei m p l 锄e i l t a t i o no fh 酏e r o s i s i s d e s 面b e d ,w h i c hi n c l u d e s 也ee x i s 如gd e s i 萨o f 幽吼,s o u r c ec o d e sv e r s i o nc o n 缸d l , a b s t r a c t l o 酉c a ln o w ,d e t a i l e dp o r t i n ga p p c h e s ,c n c o u n t e di s s u e s 趾dd e b u 西n gm e m o de t c ,觚d t l l es o u r c ec o d 髓o fh e t e r o s i sa r e 西v e nt o o l a 瓯t 1 1 ed e s i g no fm o d 锄w i i l d o w m a n a g e r s 趾d 砌m a i n i n gi s s u e so fh 酏朗o s i s 、h i c hc 觚b ei n l p r 0 v e da r ed i s c i l s s e d k e y w o r d s : w i n d o wm 锄曙xw i n d o ws y s t e i n ,d 砌,h 或锄s i s ,i b ,x c b 一 i 一 目录 目录 6 - 第一章引言。1 i , 1 1 课题研究背景和动机1 1 2d w m 窗口管理器l 1 3 当今各平台的窗口管理器研究现状2 1 3 1x 窗口系统2 1 3 2 微软w l l l d o w s 3 1 3 3m a co s 3 1 4 论文主要工作和内容组织4 1 4 1 1 4 2 第二章 论文主要工作4 论文内容组织4 窗口管理器5 2 1 窗口管理器的历史5 2 2 窗口管理器的类型5 2 2 1 平铺式窗口管理器5 2 2 2 堆叠式窗口管理器7 2 2 3 合成式窗口管理器9 2 3 窗口管理器的特性与功能1 0 2 4 本章小结。1 3 第三章x 窗口协议分析。 3 1x 窗口系统简介1 4 3 2x 窗口系统的历史1 4 3 3x 窗口系统的设计原则1 5 3 4x 窗口协议16 目录 3 4 1x 窗口协议简介1 6 3 4 2x 窗口协议剖析1 6 3 4 3 资源标识符1 9 3 4 4 原子2 0 3 4 5 窗口21 3 4 6 像素映射2 2 3 4 7 事件2 3 3 4 8 键盘与指点设备2 5 3 4 9 扩展2 6 3 5 本章小结2 7 第四章x 协议的客户端库分析与比较2 8 4 1 ) ( l 璐分析2 8 4 1 1 i b 简介2 8 4 1 2x 1 i b 的数据类型和a p i 2 8 4 1 3 i b 的优点3 0 4 1 4 i b 的缺点3 0 4 1 5x 1 i b 应用程序实例3 0 4 2x c b 分析3 3 4 2 1x c b 简介3 3 4 2 2x c b 的数据类型与a p i 3 3 4 2 3x c b - 砸1 程序库3 5 4 2 4x c b 的优点3 5 4 2 5x c b 的缺点3 6 4 2 6x c b 应用程序实例。3 6 4 - 3x l m x c b 往返性能对比和分析3 9 4 4 本章小结4 3 第五章h e t e r o s i s 的实现。 5 1d w m 的现有设计4 4 5 2 参考文档和x c ba p i 手册4 4 v 目录 5 3 源代码的版本控制4 4 5 4h e t e r o s i s 的基本逻辑流程4 5 5 5 具体的移植过程4 5 i 5 6 调试工具4 8 5 6 1x 印h y r 4 8 5 6 2g d b 4 8 5 7h 童t e r o s i s 的使用4 8 5 8h e t e r o s i s 的特点5 0 5 9h e t e r o s i s 的运行效果51 5 1 0h e t e r o s i s 源代码说明5 3 5 1 0 1c 0 n f i g d e h 文件5 3 5 10 2h e t e r o s i s c 文件5 4 5 10 3c o n f i g m k 文件5 8 5 1 0 4m a k 以1 e 文件5 8 5 1 1 本章小结5 9 第六章总结与展望 致谢 参考文献。 6 ( i 6 2 6 :i 附录h e t r o s i s 的源代码。6 7 a 1c o n f i g d e f h 文件6 7 a 2h e t e r o s i s c 文件6 9 a 3c o n f i g m k 文件1 0 8 a 4m 队k e f i l e 文件1 0 8 攻读硕士学位期间取得的研究成果 v i j 一 术语对照表 术语对照表 应用程序启动器:a p p l i c a t i o nl a 吼c h c r 原子:a t o m 命令行界面:c o m m a n dl i n eh l t e r f a c e( c l i ) 合成式窗口管理器:c o m p o s i t i n gw i l l d o wm a l l a g e r 桌面环境:d e s pe n v 由n m 衄t 桌面隐喻:d e s 跏pm 咖h o r 直接渲染架构:d 讹c tr c n d 醯gi n 丘埘r u c t i l r e ( d m ) 焦点偷窃:f o c u ss t e a l i n g 图形用户界面:q a n p h i cu s c ri n t e m c e ( g u i ) 进程间通信:h n * p r o c e s sc 0 衄l l n i c 撕o n ( p c ) 画家算法:p 曲1 t e r sa l g o r i m m 像素映射:p i ) 【m 印s 重定父级:r 印锄嘶 资源标识符:r e s o u r c ei d 堆叠式窗口管理器:s 切c k j n gw i n d o wm a i l a g e r 平铺式窗口管理器:t i l i n gw 缸d o wm a n g e r u n 域协议:u n d o m a i np r o t o c o l 控件工具包:w i d 酚t 0 0 i k i t 视窗,图标,目录,指点设备:、m n d o w ,i c o n ,m e l l u ,p o i n t i n gd 嘶c c ( w i m p ) 窗口管理器:w i n d o w m a n a g c r ( w m ) 窗口协议:w i n d o wp r o t o c 0 1 窗口系统:w i n d o ws y s t 锄 工作空间:w 6 r k s p a c e x 客户端:xc l i e n t x 服务器:xs e e r x 窗口系统:x 讹d o ws y s t e m z 顺序:zo r d e r v i i 第一章引言 1 1 课题研究背景和动机 第一章引言 在平时使用g n u l i n u x 的过程中,笔者尝试过多种窗口管理器,例如m 以她t v , c o m p i z ,a w e s o m e 和d 吼等。随着使用的慢慢深入,笔者了解到了x c b ,它是 一种新开发的开源x 客户端程序库。x c b 较之传统的i b 程序库,提供了更为整 洁和一致的a p i ,并且在实际使用中还可在一定程度上提高图形客户端程序的性 能。因此,就x 窗口系统及其上x c b 和i b 进行分析和实际性能的对比测试, 并且将日常会频繁使用的窗口管理器从i b 移植至更新的x c b ,将会具有一定的 理论意义和实际意义。在此基础之上,在为数众多的窗口管理器当中,考虑到如吼 的平台特性和开源特性,最终决定选择它作为整个移植工作的基础。 1 2 d 帅窗口管理器 弧,m ( d y i l a m i cw i n d o wm a n a g e r ) 【1 1 是x 窗口服务器上的一种动态窗口管理 器( 如图1 2 所示) 。它具有平铺窗口,单一窗口以及浮动窗口三种窗口管理布局。 所有的布局可动态应用,进而优化了使用中的应用程序的桌面环境,以及用户对 于工作任务的进行。 r2 345 一fr 蓉蘧 f i 国雹蟹匠圈囝露置固 圈墨雹翟翟互匿翟墨功u 如罩92 0 ;0 0 :0 8 。b s t2 0 0 9 o + 2 9 图1 1d w m 的状态栏 在平铺布局中,所有的窗口通过主要区域和堆叠区域进行管理。主要区域中 为当前最需要关注的窗口,而其他窗口则放置在堆叠区域。在单一窗口布局中, 所有的窗口都被最大化至屏幕尺寸。在浮动窗口布局中,所有的窗口都可以自由 的缩放与移动。对话框窗口会始终以浮动方式显示,而不管当前所应用的布局。 而d 幔会在窗口四周绘制一个可定制的细边框,用以指示窗口焦点的状态。 所有的窗口都通过标签进行分组。每一个窗口可以被标注上一个或者多个标 签。选择特定的标签则会显示所有带有此标签的窗口。 每一个屏幕都包含一个小小的状态栏( 如图1 1 所示) ,用于显示所有可用的 电子科技大学硕士学位论文 标签,布局,可见窗口数,当前前台窗口的标题,以及同当前屏幕根窗口的窗口 名称属性中所读出的文本。浮动窗口由窗口标题前的一个空心方块表示,而最大 化的浮动窗口则由一个实心方块表示。当前所选择的标签通过不同的颜色来表示。 当前前台窗口的标签由标签左上角的一个小实心方块表示。应用到一个或多个窗 口的标签则由左上角的空心方块指示。 图1 2d 、) l ,m 窗口管理器的运行截图 1 3 当今各平台的窗口管理器研究现状 1 3 1x 窗口系统 x 窗口系统【2 】是一种切时l i n u x 系统上占据主流的窗口系统。在使用x w i n d o w 的系统上,窗口管理器同窗口系统是有明显层次上的划分的。严格的说, x 上的窗口管理器并不直接与视频硬件,鼠标或键盘进行交互,而是由其下层的x 服务器提供,它自身只是使用i b 或者x c b 的普通的x 客户端。 由于上述原因,x 窗口系统的用户因此可以很容易地使用许多种不同的窗口 管理器,比如m e t i s s e 【3 1 ,s c w m 【4 j ,以及r o o m s 【5 】。因为大部分的窗口管理器都是 模块化的,而它们只会替换图形环境的一部分,也因为如此,不同窗口管理器的 组件甚至可以混用,比如l e 的窗口管理器挑中的窗口装饰功能就可以用在 2 第一章引言 g n o m e 的桌面和d o c k 组件中。现今人们偏爱使用c 伽叩i z ( 一种3 d 合成式窗口 管理器) 这一类的窗口管理程序。 x 上的窗口管理器还具有对应用程序“重定父级 的能力。这意味着虽然初 始时所有的应用程序都从属于根窗口,但一个从属于根窗口的应用程序可变为从 属于另一个应用程序。基于x 窗口系统的窗口管理器能从根窗口中接管应用程序, 并对其外观进行修饰,比如加上边框和标题栏。重定父级特性也可用于将一个窗 口中的内容加入到另一个窗口当中去。比如,一个f l a s h 播放器可以嵌入到一个浏 览器窗口中,而我们人眼看上去它就好像是浏览器的一部分。因此,具有重定父 级特性的窗口管理器可以将一个或者多个程序安排在一个窗口中,并且以多种方 式对窗口进行平铺或堆叠。 1 3 2 微软win d o w s 1 3 。2 1 微软w in d o w sx p 微软的w 协d o w s 只允许用户对很有限的窗口管理功能进行定制,基本上仅 限于经典的w i n d o w s9 5 外观或者较新的l 吼主题。但现在也有针对微软w i i l d o w s ,以及更早的w i n d o w s 版本的外观替代品,比如l i t e s t 印就可以将w l l l d o w s9 5 , 9 8 以及n t 的g u i 替换成a r e r s t 印【6 】的风格。还有很多带有实验性质的窗口管理 软件,比如:w i n d o w s c 印e 【7 】,t a s kg a l l e 引,b u m p t 0 p 【9 1 ,1 弧k p o s e 【l o 】,a b cx p e x t e n s i o n 【1 1 1 ,以及s c a l a b l ef a b r i c 【1 2 】等等。但总的来说,由于w h d o w s 的闭源性质, 以及其图形子系统同其他各系统组件的紧密集成,使得、矾n d o w sx p 较之l i n u x 等 开放系统,在窗口管理的可定制性上要差许多。 1 3 2 2 微软w in d o w sv is t a w i n d o w s s t a 内建了一个具有主题功能的合成式窗口管理器,叫作d e 出0 p w i n d o wm a n a g e r 。这一窗口管理器可以使用多种不同复杂度的用户界面。默认情 况下是w 协d o w sa e r 0 ,一种全3 d 加速的窗口界面。但用户也可以将其关闭,而 用另一种更简单和更快速的窗口界面代替。 1 3 3m a c0 s 苹果公司的m a co s 操作系统,是最早在使用堆叠式窗口g u i 上取得商业性 成功的案例之一。早期的m a co s 通过q u i r a w 实现其堆叠式的窗口管理,而 电子科技大学硕士学位论文 从m a co sx1 0 o 开始,m a c0 sx 使用了一种更为高级的窗口管理器,它支持合 成功能。而m a co sx1 0 2 对其进行了更新,使之可以通过q u a r t zc o m p o s i t o r 支 持硬件加速的合成功能。 1 4 论文主要工作和内容组织 1 4 1 论文主要工作 1 研究并分析x 窗口系统的底层窗口协议。 2 研究x 协议的客户端库i b 和x c b ,分析其二者的数据类型,时i 以及 优缺点,并给出应用程序实例。 3 对i b 和x c b 二者的性能进行比对和分析。 4 将d 、) l r m 从i b 移植至x c b ,实现h e t e r o s i s 。 1 4 2 论文内容组织 第一章绪论:介绍本论文的研究背景,研究动机以及工作内容,并给出了当 前的窗口管理器研究现状。 第二章窗口管理器:描述了窗口管理器的历史,三种分类,以及窗口管理器 可具备的功能和特性。 第三章x 窗口系统:介绍x 窗口系统的历史和现状,以及其设计原则,并详 细分析了x 窗口协议通信过程及其主要数据类型。 第四章x 协议客户端库:分别分析了i b 和x c b ,并对二者进行了详细的 性能比较。 第五章h e t e r o s i s 的实现:详细描述了将d 、) l ,m 从i b 向x c b 移植的过程,并 给出了源代码说明和完整源代码清单。 第六章总结和展望:对全文进行总结,其中对于窗口管理器的设计进行了一 定的讨论,并在最后给出了后续h 咖s i s 可以改进和优化的地方。 4 第二章窗口管理器 2 1 窗口管理器的历史 第二章窗口管理器 在上世纪7 0 年代,施乐公司生产的x e r o xa l t 0 ,是第一个带有可用的w m 口 式g u i 电脑。它使用了具有窗口重叠功能的堆叠式窗口管理器。而在8 0 年代早期 出现的m t o 的后继者x e r o xs t a r ,则对大部分应用程序窗口使用平铺方式,而只对 对话框使用重叠方式,这很大程度上除去了其对于堆叠功能的需要。 发布于8 0 年代早期的g e m l 1 ,是一个支持桌面隐喻的窗口管理器,它也采 用堆叠方式,允许窗口重叠。g e m 因作为主g u i 包含在运行a t 撕t o s 操作系统 的a t 撕s t 系统中而闻名。并且在微软w i n d o w s 普及之前,它还是m s d o s 上一 个流行的g u i 。但由于后来苹果公司的诉讼,g e m 不得不除去其窗口堆叠功能, 而变成一种平铺式窗口管理器。 在8 0 年中期,a m i g ao s 也包含了一种高级堆叠式窗口管理器的简单实现。 但它使用了一种以“工作台”为中心的界面隐喻,而不是桌面隐喻。比如,它使用“抽 屉”,而不是使用“文件夹”。也因为如此,它的窗口管理器被命名为“缸l i g a 工作台” ( a m i g aw 6 r k b e n c h ) 。 在1 9 8 8 年,p r e s e n t a t i o nm a n a g 一1 3 】成为了o s 2 的默认界面。而在此之前, o s 2 使用的还是命令行界面。o s 2 是微软和i b m 一同合作的一个联合项目,并 且与微软的w i n d o w s 有着相同的起源。但在微软和i b m 分道扬镳之后,o s 2v 3 被重命名为w i n d o w sn t ,而p r e s e n t a t i o nm a l l a g e r 则被微软自己的窗口系统和窗口 管理器所取代。1 1 4 1 2 2 窗口管理器的类型 2 2 1 平铺式窗口管理器 平铺式窗口管理器是一种以互斥的,不重叠的方式来组织窗口的窗口管理器, 它会将所有窗口一个挨着一个的绘制在屏幕上。它与更为流行的基于坐标的推叠 式窗口管理器不同,它并没有完全采用桌面隐喻。微软的w i n d o w s1 o 使用的就是 5 电子科技大学硕士学位论文 平铺方式,而对于l i n u x 八n ,则有各种各样的平铺式窗口管理器可用。 世界上第一个图形用户界面诞生于施乐公司的帕罗奥多研究中心( x e r o x p a r c ,x e r o xp a la l t 0r e s e a r c hc e n t e r ) 。这一g u i 使用了桌面隐喻。之后,施乐 帕罗奥多研究中心又开发了c e d a r ,这也是第一个使用了平铺式窗口管理器的窗 口系统。而其x e r o xs t a r 系统就对应用程序窗口进行平铺,但允许对话框和属性窗 口重叠。这之后的a n d r e w 【1 5 】窗口管理器( a n d r e ww i n d o wm a n a g c r ) 是2 0 世纪 8 0 年代a n d r e w 项目中的窗口系统,它只能进行平铺。之后它被x 窗口系统所取 代。【1 6 】 微软公司的w i l l d o w s1 0 使用的亦是平铺式窗口管理器,之所以如此,部分原 因是由于与苹果公司关于重叠式窗口桌面隐喻的所有权诉讼。但由于用户的不满, w l i l d o w s2 0 沿行了桌面隐喻,使用堆叠式窗口管理。这之后的所有的w i n d o 、s 操作系统也都以此做为默认方法。而从w i n d o w s9 5 起,其开始包含一个窗口管理 器,默认情况下,它亦采用传统的窗口重叠方式,但也可以做为简单的平铺式窗 口管理器使用。但现如今实际上,还有一些第三方工具可以w i n d o w s 提供更为高 级的平铺功能,比如:w h d o w s i z e r ,w i n s p l i t ,d o c k b o x ,嘶d m o v e ,以及b u g n 。 图2 1 平铺式窗口管理器1 0 n 在x 窗口系统中,窗口管理器是一个独立的程序。x 窗口系统本身并没有强 制要求用户使用特定的窗口管理方式,并且第1 1 版的x 协议( x 1 1 ) 也显式的指 6 第二章窗口管理器 出了使用平铺式窗口管理器的可能。而发布于1 9 8 8 年的s i e m e n si 汀lt i l e dw i n d o w m a n a g e r 【r 7 】则是第一个实现自动放置缩放策略的窗口管理器。这一时期的另一个 平铺式窗口管理器是由i b m 的学术信息系统组( a c a d e m i ci n f o m a t i o ns v s t 锄 c u p ) 开发的c a n l b r i d g ew i n d o wm a n a g e r 。而在这之后很长一段时间里,一直都 没有新的基于x 的平铺式窗口管理器出现。直到2 0 0 0 年,l a r s 、m 和1 0 n ( 图2 1 ) 发布了它们的第一个版本。l a r s 、m 实现了一种动态平铺功能:显示器被垂直的分 割为两个区域。左边区域由单独一个窗口填满。而在右边的栈式区域,其他的窗 口一个一个的堆在一起。1 0 n 结合了平铺和标签界面:显示器被手动分割为多个不 重叠的区域。每个区域可以包含一个或多个窗口,但只有一个窗口可见并填满整 个区域。而嘲l 可以通过在状态栏( 图1 1 ) 点击一个文本组成的“图标”来切换 平铺布局。默认布局是类似h s w m 的主区域+ 堆栈区的安排方式,用“口一 表 示。还有一个类似e v i l 、釉的非平铺浮动布局,使得窗口可以移动和缩放,用像鱼 一样的“冷 表示。还有第三方的补丁提供了基于黄金分割的斐波那契式布局, 格子式布局,以及水平的栈式布局。除此以外,基于x 窗口系统的平铺式窗口管 理器还有x m o n 刹心j ,r a t p o i s o n ,s t 哪p w m ,佻w m ,、m i i ,踟e s o m e 等等。 2 2 2 堆叠式窗口管理器 堆叠式窗口管理器是一种以特定顺序绘制窗口的窗口管理器,它可以让各个 窗口重叠起来。所有可以让窗口重叠,但又不是合成式的窗口管理器都可以认作 是堆叠式窗口管理器,尽管它们可能不一定都使用相同的技术实现。而其他不允 许窗口重叠的窗口管理器则归为上述的平铺式窗口管理器。 堆叠式窗口管理器一般使用的是画家算法【1 9 1 。堆叠,或者说在画家算法中所 谓重绘,指的是将窗口作为一幅图像来绘制,直接绘制在桌面上,或者在任何已 经被绘制的窗口之上。这相当于擦除了它所覆盖的区域。这一过程通常从桌面开 始,然后从后向前绘制每一个窗口及其子窗口,直至绘制完所有窗口。堆叠式窗 口管理器通过这样一次绘制一个窗口,来实现窗口重叠功能。而窗口被堆叠的顺 序叫作它的z 顺序。 然而,堆叠是一个非常缓慢的过程,需要一个一个的重绘每一个窗口,从最 后最外的到最前最里的。当今许多堆叠式窗口管理器并不总是重绘背景窗口。还 有一些管理器可以侦测何时需要重绘所有窗口,因为有一些应用程序会在输出改 变的时候才发出请求。窗口的重排一般是通过一个对窗口管理器的函数调用。窗 电子科技大学硕士学位论文 口管理器会有选择性重绘需要重绘的窗口。比如,虽然有时候重排窗口后需要重 绘所有窗口,但把对于最后面的窗口放到最前面,一般只需要重绘其本身,因为 最后面的窗口的大部分面积都被前面的窗口给遮盖了。 此外,堆叠方式还有一些众所周知的不足。由于当绘制新窗口的时候,就相 当于擦除了之前位于其覆盖区域内的所有内容。而当其下存在被遮挡的窗口时, 这些窗口就得在它们变为前台窗口或其可见部分改变时进行重绘。当一个窗口的 内容改变或者其在屏幕上的位置发生变化时,窗口管理器会侦测到这一变化,并 重排所有窗口。这也需要窗口重绘它自己,并在重绘前将其新的外观告知窗口管 理器。当一个应用程序停止响应时,它可能无法无法重绘自身,进而有时候会导 致当一后台窗口其变为前台窗口时,其内部区域仍然保持着其他窗口的图像。这 一问题在w i l l d o w sx p 及其之前版本,以及一些x 窗口管理器中很常见。另外, 还有一个几乎影响所有堆叠式窗口管理器的严重限制,即g p u 对它们使用的编程 接口的加速程度上往往有很大的限制,而在这一点上又很难有改进。 匿i 嗣量乏= 0 7 ,三;璃 霾复鐾 黔 一 : :,臻帅m 州鱼口,脚蜘黼 蘸。x k 。缸罐盔拖i 基i g :菇矗;:篡诤一一,一a 鲁m :一- 二一j i i ;= j n 襽 8 e j + ,墨 m _ i + 。 瞰蛐钾曼o 咖m e 量哪啦必i 口! = h 咖l 翮辫 一r ,w a d pf7茹儡嵫黼 “一系釜名滋 踊忡喘嚣吁露3 二 _ : 簸面 一图。幽器 嘲强国_o 一 , 。”第4 ”“ m de e 露! 竺= z 荆 “? 7 霸 吐墨- :t :二二藏二b 融强4 ,? “ 豳i ! f dj :上 。置j j , 女证。 趟 目目k l _ 一啦一= 。上le 目瞌一j _ 甜 瓮= :p m “一l j j 。? :+ ? ? 鬻 ;? ? ,:。一i 0 + 一,。j 。:。,:,:二纛圆 蠡i 。娩。i :。麓 j f i 翻蹦 ,。 , e 。r - f :。 需l _ 。茹- - 一一- “岫i _ 嘤k 。m 。,愫唧。m 一一“n - ,且翻。二童妇2 蛸 i 山 第二章窗口管理器 使得为一种窗口管理器编写的程序可以无缝的在另一种下工作。 w i i l d o w s 从2 0 开发就开始使用窗口可重叠的窗口管理,而且直到现在还是。 这导致现今的w i n d o w sx p 在普通窗口中显示硬件加速内容的能力受到严重限制。 此外,虽然技术上使用第三方软件来实现一些视觉效果是可能的,但微软公司的 w i n d o w s s t a 已经抛弃这一窗口推叠技术,转而使用一种合成式窗口管理器。 2 2 3 合成式窗口管理器 合成式窗口管理器【2 0 】是一种可使各个窗口单独的创建和绘制,并在各种2 d 和 3 d 环境中一并显示的窗口管理器,这也是合成窗口管理器同其他两种窗口管理器 的主要区别。它不是将各窗口输出到到一个公共的缓冲区,而是将其分别输出到 一个独立的缓冲区或者电脑内存中的临时区域。这些独立缓冲区的输出被窗口管 理器处理和组合,或者说合成,然后放到才放到一个公共桌面上。结果是这些窗 口的行为像是一个个独立的2 d 或3 d 对象,在显示之前可被操纵和修改。合成使 得各种不同感观的界面,以及各种高级视觉效果成为可能,比如透明,淡入淡出, 缩放,复制,融合,扭曲,组合以及重定向窗口。虚拟的第三维的加入,使得窗 口下的真实感阴影,距离和深度的表现,窗口的实时缩略图以及复杂动画等特性 也成为可能。 最常用的合成式窗口管理器有微软w 谊d o w s 中的d e s k t o pw l l l d o wm a n a g e r , m a co sx 中的伽a r t zc o m p o s i t o r 【2 1 1 ,还有基于【血u x 和0 i p e i l s 0 1 撕s 等类u n 系 统中的c o m d i z ( 图2 3 ) 。 在l i n u x 八肘中,尽管有x 1 1 中合成功能的支持,但进行完全3 d 加速的合 成能力有赖于x 1 1 实现中几个架构性的改进。这些改进使得图形环境的一部分可 以直接运行于显卡之上。起初,一些围绕着o p e i l g l 设计的x 1 1 实现开始出现。 这其中就有x 酉,它使用o p e i l g l 为窗口管理提供全3 d 环境。后来,a i g l x ( a c c l e r a t e di i l d i r e c tg l x ) 的出现除去了对于x 酉的需要,使得窗口管理器可以 在标准x 服务器上进行3 d 加速合成,同时它还提供d r i 方式来访问显卡。当前 n d i a ,i n t

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论