Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何清除XFixes区域_C++_X11 - Fatal编程技术网

C++ 如何清除XFixes区域

C++ 如何清除XFixes区域,c++,x11,C++,X11,我正在为X11平台编写一些低级代码。为了获得最佳的数据复制性能,我使用XFixes/XDamage扩展 如何在一个刷新周期后清除XFixes区域的内容?或者在我使用XfixeSetPictureClipregion之后,他们会自己清洗吗 我的代码是这样的: Display xdpy; XShamPixmap pixmap_; XFixesRegion region_; damage_event_callback(damage_geometry_t geometry, XDamage damag

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

如何在一个刷新周期后清除XFixes区域的内容?或者在我使用XfixeSetPictureClipregion之后,他们会自己清洗吗

我的代码是这样的:

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 
    */

    ...
    }

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

我不确定您清除该区域的意思;你的意思是取消图片上的剪辑,还是释放该区域

要取消设置剪辑,我想您应该将剪辑区域设置为“无”

释放区域xfixesdroductionregion()的步骤

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