Software cursor + Hardware cursor improvements
Created by: ascent12
Draw a cursor using wlr_renderer if a backend fails to draw a cursor. It also gives the option for a backend that doesn't want/need to handle cursors in a special way to just let this handle it.
There are also a couple of other changes, mainly to make this easier to implement.
- Changed the wlr_output 'frame' signal to not automatically make the EGL/OpenGL context current. The user must now explicitly call the new
wlr_output_make_current
andwlr_output_swap_buffers
functions. This is mainly so the SW cursor can be drawn in swap buffers, but it also gives the user the option to draw something to an output whenever they want to. - Added stride argument to
wlr_renderer_attach_pixels
. Also the GL_EXT_unpack_subimage extension is used to deal with the stride, so we don't have no needlessly copy a bunch of stuff ourselves. It currently doesn't check for the extension, but it's probably widely supported enough.