compositor: Move repaint loop into a backend function

We've trimmed down the actual repaint loop to just iterating through the
surface list and calling weston_surface_draw(), so we push that to the
backend without too much code duplication.
diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index 09213f7..771bf69 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -200,6 +200,16 @@
 	return 0;
 }
 
+static void
+x11_output_repaint(struct weston_output *output)
+{
+	struct weston_compositor *compositor = output->compositor;
+	struct weston_surface *surface;
+
+	wl_list_for_each_reverse(surface, &compositor->surface_list, link)
+		weston_surface_draw(surface, output);
+}
+
 static int
 finish_frame_handler(void *data)
 {
@@ -462,6 +472,7 @@
 		wl_event_loop_add_timer(loop, finish_frame_handler, output);
 
 	output->base.prepare_render = x11_output_prepare_render;
+	output->base.repaint = x11_output_repaint;
 	output->base.present = x11_output_present;
 	output->base.prepare_scanout_surface =
 		x11_output_prepare_scanout_surface;