Instead of calling gdk_surface_invalidate_region(), just gdk_surface_queue_expose() and rely on the renderer computing the diff from the previous rendering.
Instead of calling gdk_surface_invalidate_region(), just gdk_surface_queue_expose() and rely on the renderer computing the diff from the previous rendering.