【发布时间】:2019-06-12 12:58:03
【问题描述】:
Ubuntu (xfce) 提供虚拟桌面,也就是工作空间。我想获取放置在另一个虚拟桌面上的应用程序的屏幕截图。我成功创建了 xcb 连接,我可以通过标题找到应用程序窗口。问题是 xcb_get_image_reply 失败。我做这样的事情:
auto cookie = xcb_get_image(m_XCBConnection, XCB_IMAGE_FORMAT_Z_PIXMAP, m_XCBWindow, x, y, width, height, ~0);
xcb_generic_error_t * err = nullptr;
auto image = xcb_get_image_reply(m_XCBConnection, cookie, &err);
// xcb_connection_has_error( m_XCBConnection ) returns no error
if ( err ) {
// here I have err->error_code == 8
free( err );
}
如果我理解正确 XCB errors encodings 和 general XCB errors explanation 我得到错误描述为:
匹配 InputOnly 窗口用作 DRAWABLE。在图形请求中,GCONTEXT 参数与目标 DRAWABLE 参数的根和深度不同。某些参数(或一对参数)具有正确的类型和范围,但无法以请求所需的其他方式匹配。
但我不知道该怎么处理。
注意:如果两个应用程序都在同一个虚拟桌面上,上述解决方案可以正常工作。
【问题讨论】: