RFE: reduce number of copies during rendering
I did some research on current slow path (not using overlay but rendering through canvas) and looks like we can do some optimization. This path use a "draw" signal which receives a cairo_t* and use another cairo_surface_t* with canvas data to render. This is not optimal as cairo will have to copy canvas data before talking to OS. If the cairo surface is created from the device is possible that cairo uses SHM(Unix)/DIBSection(Windows) avoiding a copy. Another optimization would be to replace the canvas with the last frame if the last frame occupy the entire screen (and so the canvas).