Screenshooting and screen casting fixes
This contains two slightly entangled fixes:
- Screencasts on X11 didn't include cursor sprite.
- Screenshooting using
clutter_stage_paint_to*()
didn't always include the cursor sprite.
The first was previously fixed in GNOME Shell by polling the X server while screen recording. This functionality has now moved to mutter and the screen cast implementation. In the Wayland session there were no changes needed as the pointer position is handled by mutter itself and not the X server.
The second is handled by having the cursor renderer always managing a cursor sprite overlay on the stage, and only hiding it when the cursor is assigned to a cursor hw plane. This allows us to record a frame (using clutter_stage_paint_to*()
) with the cursor sprite included, without disabling the hw cursor plane.