The DAMAGE Extension

DAMAGE扩展改变了窗口和pixmaps像素内容的行为,用于处理由于绘图操作导致的‘damage’。它允许应用程序接收并处理这些原始矩形事件流,减少数据传输和重绘延迟。本文详细介绍了DAMAGE模型、实现分析,包括XDamage的相关函数和处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1,DAMAGE模型

    这一部分翻译自英文Spec:

    英文原文:http://webcvs.freedesktop.org/xlibs/DamageExt/protocol?view=co

    我们将改变窗口和pixmaps像素内容的行为称作“damage”。另一个“damage”的解释就是,drawable区域由于窗口管理导致的重绘或者其他操作导致的数据损失。本扩展没有处理第二种情况。我们迫切的希望一个更好的不会混淆这些观点的术语。

    当用户向drawable绘图时,会累积Damage。每一次绘图操作会在drawable里面破坏一个或者多个矩形区域。这些矩形区域会包括每一次绘图操作修改的像素集合,但是也可能包括像素之外的更重要的信息(可能将没有被改变的区域也包括进来了)。现在需要damage平衡已被报告的矩形区域(包括了被修改和没有被修改的)和额外的区域(没有被修改的部分)的数量(这样我们就可以找出哪些是确实需要重画的,从而减少系统工作量)。一个比较合理的目标是,每一个原子操作 (line, string, rectangle)被表示为一个矩形,而操作的damage区域就是这些矩形的集合了。

    DAMAGE 扩展允许应用把这些原始的矩形当作事件流来接收,也允许他们被X服务器部分的处理(这里服务器应该是指Xdamage,部分的处理是指通过XDamage获得确实需要重画的画面,这个画面是原始的矩形的子集)以减少数据的传输,这还可以减少重绘操作的延迟(很明显,需要重绘的区域少了---起码不会变多)。

    window的Damage反映了window 本身和window 的任何子window的Renderc操作。 为了减少计算的复杂性, DAMAGE 扩展允许服务器监视窗口范围内所有的物理像素的rendering操作(这样就不用管你是老子还是儿子啦)。对于一个单帧缓冲管理所有窗口的系统来说, damage 会累计窗口可视区域的所有的rendering操作。

    使用这种结构的具体原体原因在XSPLITTREE扩展里面讲述的比较清楚。XSPLITTREE扩展会

Mersenne Twister The C extension underlying the random module includes code based on a download from http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/MT2002/emt19937ar.html. The following are the verbatim comments from the original code:_random A C-program for MT19937, with initialization improved 2002/1/26. Coded by Takuji Nishimura and Makoto Matsumoto. Before using, initialize the state by using init_genrand(seed) or init_by_array(init_key, key_length). Copyright (C) 1997 - 2002, Makoto Matsumoto and Takuji Nishimura, All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. The names of its contributors may not be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. Any feedback is very welcome. 翻译下说的什么
03-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值