[英]xcb_get_image_reply fails for window on another workspace/desktop
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錯誤編碼和一般XCB錯誤解釋我得到的錯誤描述為:
匹配 InputOnly窗口用作DRAWABLE。 在圖形請求中,GCONTEXT參數與目標DRAWABLE參數的根和深度不同。 某些參數(或參數對)具有正確的類型和范圍,但它無法以請求所需的其他方式匹配。
但我不知道我應該怎么做。
注意:如果兩個應用程序都在同一個虛擬桌面上,則上述解決方案可以正
引用https://www.x.org/releases/X11R7.6/doc/xproto/x11protocol.html#requests:GetImage :
如果drawable是一個窗口,則窗口必須是可見的,[或]匹配錯誤結果。
因此,GetImage請求失敗,因為您要截取的窗口不可見。 除了屏幕上可見的內容之外,X11服務器不會(真正)保留任何內容。 其他一切都沒有保存在任何地方。
我想獲得放置在另一個虛擬桌面上的應用程序的屏幕截圖。
基本上:X11不能這樣做,除了切換到其他虛擬桌面,等到(如何?)有問題的窗口重新開始,然后抓取截圖。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.