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 Я получаю описание ошибки в виде:
Match Окно InputOnly используется как DRAWABLE. В графическом запросе аргумент GCONTEXT не имеет того же корня и глубины, что и целевой аргумент DRAWABLE. Некоторый аргумент (или пара аргументов) имеет правильный тип и диапазон, но он не соответствует каким-либо другим образом, требуемым запросом.
Но я понятия не имею, что мне с этим делать.
Примечание. Приведенное выше решение работает нормально, если оба приложения находятся на одном виртуальном рабочем столе.