explicitly create X11 pixmap data in QX11PixmapData::mask_to_bitmap()

QPixmap is raster by default which in turn means QBitmap also is

Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
Ivailo Monev 2022-11-07 08:33:50 +02:00
parent 999061bc4a
commit 372a688cd8

View file

@ -78,13 +78,16 @@ QBitmap QX11PixmapData::mask_to_bitmap(int screen) const
{ {
if (!x11_mask) if (!x11_mask)
return QBitmap(); return QBitmap();
QPixmap::x11SetDefaultScreen(screen); QX11PixmapData *data = new QX11PixmapData(QPixmapData::BitmapType);
QBitmap bm(w, h); data->resize(w, h);
GC gc = XCreateGC(qt_x11Data->display, bm.handle(), 0, 0);
XCopyArea(qt_x11Data->display, x11_mask, bm.handle(), gc, 0, 0, GC gc = XCreateGC(qt_x11Data->display, data->hd, 0, 0);
bm.data->width(), bm.data->height(), 0, 0); XCopyArea(qt_x11Data->display, x11_mask, data->hd, gc, 0, 0,
data->width(), data->height(), 0, 0);
XFreeGC(qt_x11Data->display, gc); XFreeGC(qt_x11Data->display, gc);
return bm; QPixmap pm(data);
pm.x11SetScreen(screen);
return QBitmap(pm);
} }
Qt::HANDLE QX11PixmapData::bitmap_to_mask(const QBitmap &bitmap, int screen) Qt::HANDLE QX11PixmapData::bitmap_to_mask(const QBitmap &bitmap, int screen)