Mouse cursors with 8 bit alpha were downsampled to 1-bit opacity maps by
turning alpha values of 255 into 1 and everything else into 0. This
means that mostly-opaque pixels ended up completely invisible.
This patch changes the behaviour so that only pixels with less than 50%
alpha (0-127) are treated as transparent when converted to 1-bit alpha.
This greatly improves the subjective appearance of anti-aliased mouse
cursors, such as those used by macOS, when using a front-end UI without
support for alpha-blended cursors, such as some VNC clients.
Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu>
---
ui/cursor.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/ui/cursor.c b/ui/cursor.c
index 29717b3ecb..dd3853320d 100644
--- a/ui/cursor.c
+++ b/ui/cursor.c
@@ -232,7 +232,7 @@ void cursor_get_mono_mask(QEMUCursor *c, int transparent, uint8_t *mask)
for (y = 0; y < c->height; y++) {
bit = 0x80;
for (x = 0; x < c->width; x++, data++) {
- if ((*data & 0xff000000) != 0xff000000) {
+ if ((*data & 0x80000000) == 0x0) { /* Alpha < 0x80 (128) */
if (transparent != 0) {
mask[x/8] |= bit;
}
--
2.39.3 (Apple Git-146)
On Mon, Jun 24, 2024 at 2:11 PM Phil Dennis-Jordan <phil@philjordan.eu> wrote: > Mouse cursors with 8 bit alpha were downsampled to 1-bit opacity maps by > turning alpha values of 255 into 1 and everything else into 0. This > means that mostly-opaque pixels ended up completely invisible. > > This patch changes the behaviour so that only pixels with less than 50% > alpha (0-127) are treated as transparent when converted to 1-bit alpha. > > This greatly improves the subjective appearance of anti-aliased mouse > cursors, such as those used by macOS, when using a front-end UI without > support for alpha-blended cursors, such as some VNC clients. > > Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu> > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > ui/cursor.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/ui/cursor.c b/ui/cursor.c > index 29717b3ecb..dd3853320d 100644 > --- a/ui/cursor.c > +++ b/ui/cursor.c > @@ -232,7 +232,7 @@ void cursor_get_mono_mask(QEMUCursor *c, int > transparent, uint8_t *mask) > for (y = 0; y < c->height; y++) { > bit = 0x80; > for (x = 0; x < c->width; x++, data++) { > - if ((*data & 0xff000000) != 0xff000000) { > + if ((*data & 0x80000000) == 0x0) { /* Alpha < 0x80 (128) */ > if (transparent != 0) { > mask[x/8] |= bit; > } > -- > 2.39.3 (Apple Git-146) > > > -- Marc-André Lureau
> Mouse cursors with 8 bit alpha were downsampled to 1-bit opacity maps by >> turning alpha values of 255 into 1 and everything else into 0. This >> means that mostly-opaque pixels ended up completely invisible. >> >> This patch changes the behaviour so that only pixels with less than 50% >> alpha (0-127) are treated as transparent when converted to 1-bit alpha. >> >> This greatly improves the subjective appearance of anti-aliased mouse >> cursors, such as those used by macOS, when using a front-end UI without >> support for alpha-blended cursors, such as some VNC clients. >> >> Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu> >> > > Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> Thanks for the reviews folks! Is there anything I can do to move this forward? Should I submit a v3 with the review tags included? The patch continues to apply cleanly so it didn't seem necessary, but I admit I'm still not 100% clear on whom I should badger (?) to get favourably received patches actually pulled into staging/master. https://patchew.org/QEMU/20240624101040.82726-1-phil@philjordan.eu/ Thanks! Kind regards, Phil
Hi On Wed, Jul 17, 2024 at 5:11 PM Phil Dennis-Jordan <phil@philjordan.eu> wrote: > > Mouse cursors with 8 bit alpha were downsampled to 1-bit opacity maps by >>> turning alpha values of 255 into 1 and everything else into 0. This >>> means that mostly-opaque pixels ended up completely invisible. >>> >>> This patch changes the behaviour so that only pixels with less than 50% >>> alpha (0-127) are treated as transparent when converted to 1-bit alpha. >>> >>> This greatly improves the subjective appearance of anti-aliased mouse >>> cursors, such as those used by macOS, when using a front-end UI without >>> support for alpha-blended cursors, such as some VNC clients. >>> >>> Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu> >>> >> >> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> >> > > Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> > > > Thanks for the reviews folks! Is there anything I can do to move this > forward? Should I submit a v3 with the review tags included? The patch > continues to apply cleanly so it didn't seem necessary, but I admit I'm > still not 100% clear on whom I should badger (?) to get favourably received > patches actually pulled into staging/master. > > https://patchew.org/QEMU/20240624101040.82726-1-phil@philjordan.eu/ > > I'll include it in a UI-related PR. thanks -- Marc-André Lureau
On Wed, 17 Jul 2024 at 15:20, Marc-André Lureau <marcandre.lureau@gmail.com> wrote: > Hi > > On Wed, Jul 17, 2024 at 5:11 PM Phil Dennis-Jordan <phil@philjordan.eu> > wrote: > >> >> Mouse cursors with 8 bit alpha were downsampled to 1-bit opacity maps by >>>> turning alpha values of 255 into 1 and everything else into 0. This >>>> means that mostly-opaque pixels ended up completely invisible. >>>> >>>> This patch changes the behaviour so that only pixels with less than 50% >>>> alpha (0-127) are treated as transparent when converted to 1-bit alpha. >>>> >>>> This greatly improves the subjective appearance of anti-aliased mouse >>>> cursors, such as those used by macOS, when using a front-end UI without >>>> support for alpha-blended cursors, such as some VNC clients. >>>> >>>> Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu> >>>> >>> >>> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> >>> >> >> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com> >> >> >> Thanks for the reviews folks! Is there anything I can do to move this >> forward? Should I submit a v3 with the review tags included? The patch >> continues to apply cleanly so it didn't seem necessary, but I admit I'm >> still not 100% clear on whom I should badger (?) to get favourably received >> patches actually pulled into staging/master. >> >> https://patchew.org/QEMU/20240624101040.82726-1-phil@philjordan.eu/ >> >> > I'll include it in a UI-related PR. > > thanks > Thank you!
On 2024/06/24 19:10, Phil Dennis-Jordan wrote: > Mouse cursors with 8 bit alpha were downsampled to 1-bit opacity maps by > turning alpha values of 255 into 1 and everything else into 0. This > means that mostly-opaque pixels ended up completely invisible. > > This patch changes the behaviour so that only pixels with less than 50% > alpha (0-127) are treated as transparent when converted to 1-bit alpha. > > This greatly improves the subjective appearance of anti-aliased mouse > cursors, such as those used by macOS, when using a front-end UI without > support for alpha-blended cursors, such as some VNC clients. > > Signed-off-by: Phil Dennis-Jordan <phil@philjordan.eu> Reviewed-by: Akihiko Odaki <akihiko.odaki@daynix.com>
© 2016 - 2024 Red Hat, Inc.