diff options
author | Olivier Fourdan <ofourdan@redhat.com> | 2022-02-11 09:20:46 +0100 |
---|---|---|
committer | Olivier Fourdan <ofourdan@redhat.com> | 2022-02-11 10:33:10 +0100 |
commit | 6ad6517a796cb4536d368091b647423981ad1217 (patch) | |
tree | b27af2ba810d2ea920a40ff4cad66ba2db3b6431 | |
parent | 1801fe0ac3926882d47d7e1ad6c0518a2cdffd41 (diff) |
xwayland: Fix cursor color
When using colored X11 cursors, the colors would appear wrong, yellow
would show white, green would show as cyan, and blue would show black
whereas red would show fine.
This is because the code expanding the cursor data accounts for green
for both green and blue channels. Funnily this bug has been there from
the beginning.
Fix the issue by correctly account for the color channels.
Closes: https://gitlab.freedesktop.org/xorg/xserver/-/issues/1303
Signed-off-by: Olivier Fourdan <ofourdan@redhat.com>
Reviewed-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Michel Dänzer <mdaenzer@redhat.com>
-rw-r--r-- | hw/xwayland/xwayland-cursor.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/hw/xwayland/xwayland-cursor.c b/hw/xwayland/xwayland-cursor.c index 16c13fb64..e3c1aaa50 100644 --- a/hw/xwayland/xwayland-cursor.c +++ b/hw/xwayland/xwayland-cursor.c @@ -54,9 +54,11 @@ expand_source_and_mask(CursorPtr cursor, CARD32 *data) p = data; fg = ((cursor->foreRed & 0xff00) << 8) | - (cursor->foreGreen & 0xff00) | (cursor->foreGreen >> 8); + (cursor->foreGreen & 0xff00) | + (cursor->foreBlue >> 8); bg = ((cursor->backRed & 0xff00) << 8) | - (cursor->backGreen & 0xff00) | (cursor->backGreen >> 8); + (cursor->backGreen & 0xff00) | + (cursor->backBlue >> 8); stride = BitmapBytePad(bits->width); for (y = 0; y < bits->height; y++) for (x = 0; x < bits->width; x++) { |