summaryrefslogtreecommitdiff
path: root/dev-qt/qtwayland/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-08-09 03:29:05 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-08-09 03:29:05 +0100
commit0b39c3b03f13c084074099704a673640904e5249 (patch)
tree0a479d20463f0ecdad56efcad3c11f98f37f2b79 /dev-qt/qtwayland/files
parentfcd00f02f3d3ec2d37625d68ee736a3e7381fb87 (diff)
gentoo auto-resync : 09:08:2023 - 03:29:05
Diffstat (limited to 'dev-qt/qtwayland/files')
-rw-r--r--dev-qt/qtwayland/files/qtwayland-5.15.10-QTBUG-95434-convert-cursor-bitmap.patch66
1 files changed, 66 insertions, 0 deletions
diff --git a/dev-qt/qtwayland/files/qtwayland-5.15.10-QTBUG-95434-convert-cursor-bitmap.patch b/dev-qt/qtwayland/files/qtwayland-5.15.10-QTBUG-95434-convert-cursor-bitmap.patch
new file mode 100644
index 000000000000..7b43ee3b2149
--- /dev/null
+++ b/dev-qt/qtwayland/files/qtwayland-5.15.10-QTBUG-95434-convert-cursor-bitmap.patch
@@ -0,0 +1,66 @@
+From dd5c9e2d894ca94faaeef7dfc3cc4344a7f62640 Mon Sep 17 00:00:00 2001
+From: Michael Weghorn <m.weghorn@posteo.de>
+Date: Mon, 20 Feb 2023 14:02:23 +0100
+Subject: [PATCH] Convert cursor bitmap to supported format
+
+The 1-bit image formats QImage::Format_Mono and
+QImage::Format_MonoLSB used by cursor bitmaps don't have
+a corresponding wl_shm_format.
+
+Therefore, convert to a supported image format as necessary
+to make such bitmap cursors work on Wayland as well.
+
+Fixes: QTBUG-95434
+Change-Id: I402fd870b301ddc01075251b66f2cf7cc1923133
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 45ec1362f8fcb5ade92f4d2d4985b1c24e78c8ba)
+
+Backport changes: Use Qt::ReturnByValue version for QCursor::mask() and QCursor::bitmap()
+---
+ src/client/qwaylandcursor.cpp | 23 ++++++++++++++++++++++-
+ 1 file changed, 22 insertions(+), 1 deletion(-)
+
+diff --git a/src/client/qwaylandcursor.cpp b/src/client/qwaylandcursor.cpp
+index e4eca9d4e..ba76ba2d0 100644
+--- a/src/client/qwaylandcursor.cpp
++++ b/src/client/qwaylandcursor.cpp
+@@ -44,6 +44,7 @@
+ #include "qwaylandshmbackingstore_p.h"
+
+ #include <QtGui/QImageReader>
++#include <QBitmap>
+ #include <QDebug>
+
+ #include <wayland-cursor.h>
+@@ -250,7 +251,27 @@ QWaylandCursor::QWaylandCursor(QWaylandDisplay *display)
+ QSharedPointer<QWaylandBuffer> QWaylandCursor::cursorBitmapBuffer(QWaylandDisplay *display, const QCursor *cursor)
+ {
+ Q_ASSERT(cursor->shape() == Qt::BitmapCursor);
+- const QImage &img = cursor->pixmap().toImage();
++
++ const QBitmap mask = cursor->mask(Qt::ReturnByValue);
++ QImage img;
++ if (cursor->pixmap().isNull())
++ img = cursor->bitmap(Qt::ReturnByValue).toImage();
++ else
++ img = cursor->pixmap().toImage();
++
++ // convert to supported format if necessary
++ if (!display->shm()->formatSupported(img.format())) {
++ if (mask.isNull()) {
++ img.convertTo(QImage::Format_RGB32);
++ } else {
++ // preserve mask
++ img.convertTo(QImage::Format_ARGB32);
++ QPixmap pixmap = QPixmap::fromImage(img);
++ pixmap.setMask(mask);
++ img = pixmap.toImage();
++ }
++ }
++
+ QSharedPointer<QWaylandShmBuffer> buffer(new QWaylandShmBuffer(display, img.size(), img.format()));
+ memcpy(buffer->image()->bits(), img.bits(), size_t(img.sizeInBytes()));
+ return buffer;
+--
+GitLab
+