This series of loosely related changes provides some minor improvements
in mouse cursor usability.
1. This one-liner changes alpha downsampling when using a UI frontend
which does not support alpha-blended mouse cursors. Previously,
any pixel with an alpha value other than 255 was treated as fully
transparent in this context. This looks pretty bad when the guest
OS uses anti-aliased cursors. (e.g. macOS) This occurs with some
VNC clients, for example.
2. This change has nothing to do with cursors: there are two
functionally identical implementations of an int_clamp() inline
function in the Qemu codebase. This unifies them in the shared
cutils.h header, as I'm about to use it in a third location in
patch number 3.
3. This sizeable patch implements cursor support in the (macOS) Cocoa
UI frontend. This fixes the issue of no mouse pointer showing up
when using virtio-vga on a macOS host, for example.
It unfortunately introduces some complexity to the mouse movement
event handling when using a relative pointing device in the guest,
as teleporting the cursor on the host offsets the next mouse event
delta by a corresponding amount. We therefore need to track this
offset and counteract it when processing the event. For details,
see the commit message and inline comments.
This work was sponsored by Sauce Labs Inc.
Phil Dennis-Jordan (3):
Cursor: 8 -> 1 bit alpha downsampling improvement
hw: Moves int_clamp() implementations to header
ui/cocoa: Adds support for mouse cursors
hw/input/hid.c | 12 +--
hw/usb/dev-wacom.c | 11 +--
include/qemu/cutils.h | 11 +++
ui/cocoa.m | 167 +++++++++++++++++++++++++++++++++++++++++-
ui/cursor.c | 2 +-
ui/trace-events | 7 ++
6 files changed, 185 insertions(+), 25 deletions(-)
--
2.36.1