Подскажите, кто знает, как правильно получить изображение по идентификатору xorg Pixmap и сохранить его в QPixmap???
QPixmap windowIcon;
windowIcon.detach();
Pixmap wndIcon = None; //Иконка
Pixmap wndIconMask = None; //Маска иконки
//Получаем содержание свойства
XWMHints* pWMHints = XGetWMHints(_g_pAtoms->_pDsp, _windowId);
if (0 != pWMHints)
{//Если данные получены, то
if (pWMHints->flags & IconPixmapHint > 0) wndIcon = pWMHints->icon_pixmap;
if (pWMHints->flags & IconMaskHint > 0) wndIconMask = pWMHints->icon_mask;
XFree(pWMHints);
} //if (0 != pWMHints)
if (wndIcon != None)
{//Если если картинка, то
Window wndRoot = _g_pAtoms->_rootWindow;
int iX, iY;
unsigned int iWidth = 0;
unsigned int iHeight = 0;
unsigned int iBorderWidth;
unsigned int iDepth;
//Получаем геометрию объекта
XGetGeometry(_g_pAtoms->_pDsp, wndIcon, &wndRoot, &iX, &iY, &iWidth, &iHeight, &iBorderWidth, &iDepth);
if (iWidth > 0 && iHeight > 0)
{//Если рисунок не пуст, то
QPixmap wndPixmap(iWidth, iHeight, iDepth);
wndPixmap.detach();
GC tGC = qt_xget_temp_gc(_g_pAtoms->_iScreen, iDepth == 1);
XCopyArea(_g_pAtoms->_pDsp, wndIcon, wndPixmap.handle(), tGC, 0, 0, iWidth, iHeight, 0, 0);
if (wndIconMask != None)
{//Если у рисунка есть маска, то
QBitmap wndPixmapMask(iWidth, iHeight);
XCopyArea(_g_pAtoms->_pDsp, wndIconMask, wndPixmapMask.handle(),
qt_xget_temp_gc(_g_pAtoms->_iScreen, true), 0, 0, iWidth, iHeight, 0, 0);
wndPixmap.setMask(wndPixmapMask);
} //if (wndIconMask)
windowIcon = wndPixmap;
} //if (iWidth > 0 && iHeight > 0)
} //if (wndIcon != None)