gpt4 book ai didi

c++ - 如何清除 XFixes 区域

转载 作者:行者123 更新时间:2023-11-28 08:29:50 25 4
gpt4 key购买 nike

我正在为 X11 平台编写一些低级代码。为了获得最佳的数据复制性能,我使用了 XFixes/XDamage 扩展。

如何在一个刷新周期后清除 XFixes 区域的内容?还是在我使用 XFixesSetPictureClipRegion 后它们会自行清理?

我的代码是这样的:

Display xdpy;
XShamPixmap pixmap_;
XFixesRegion region_;

damage_event_callback(damage_geometry_t geometry, XDamage damage,...) {
unsigned curr_region = XFixesCreateRegion(xdpy, 0, 0);
XDamageSubtract(xdpy, damage, None, curr_region);
XFixesTranslateRegion( xdpy, curr_region, geometry.left(), geometry.top() );
XFixesUnionRegion (xdpy, region_, region_, curr_region);
}

process_damage_events(...) {
XFixesSetPictureClipRegion( xdpy, pixmap_, 0, 0, region_);
XCopyArea (xdpy, window_->id(),
pixmap_, XDefaultGC(xdpy, XDefaultScreen(xdpy)),
0,0,width(),height(),0,0);
/*Should clear region_ here
*/

...
}

目前我通过删除和重新创建来清除区域,但我想这不是最好的方法。

最佳答案

我不确定你所说的清除区域是什么意思;你的意思是取消设置图片上的剪辑,或者释放该区域?

要取消设置剪辑,我猜你需要将剪辑区域设置为无

释放区域 XFixesDestroyRegion()

要使该区域为空,您可能可以使用 XFixesSetRegion(dpy, region, NULL, 0) 但我不确定这会更改图片上的剪辑,除非您再次使用 XFixesSetPictureClipRegion。

关于c++ - 如何清除 XFixes 区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2659625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com