libweston: iterate paint nodes in accumulate damage

Iterate paint nodes instead of the global view list. Right now this does
not change behavior.

This is a step towards using per-output view lists that can then be
optimized for the output in libweston core.

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
diff --git a/libweston/compositor.c b/libweston/compositor.c
index 33525e9..01ce03c 100644
--- a/libweston/compositor.c
+++ b/libweston/compositor.c
@@ -2577,7 +2577,7 @@
 {
 	struct weston_compositor *ec = output->compositor;
 	struct weston_plane *plane;
-	struct weston_view *ev;
+	struct weston_paint_node *pnode;
 	pixman_region32_t opaque, clip;
 
 	pixman_region32_init(&clip);
@@ -2587,11 +2587,12 @@
 
 		pixman_region32_init(&opaque);
 
-		wl_list_for_each(ev, &ec->view_list, link) {
-			if (ev->plane != plane)
+		wl_list_for_each(pnode, &output->paint_node_z_order_list,
+				 z_order_link) {
+			if (pnode->view->plane != plane)
 				continue;
 
-			view_accumulate_damage(ev, &opaque);
+			view_accumulate_damage(pnode->view, &opaque);
 		}
 
 		pixman_region32_union(&clip, &clip, &opaque);
@@ -2600,18 +2601,22 @@
 
 	pixman_region32_fini(&clip);
 
-	wl_list_for_each(ev, &ec->view_list, link)
-		ev->surface->touched = false;
+	wl_list_for_each(pnode, &output->paint_node_z_order_list,
+			 z_order_link) {
+		pnode->surface->touched = false;
+	}
 
-	wl_list_for_each(ev, &ec->view_list, link) {
+	wl_list_for_each(pnode, &output->paint_node_z_order_list,
+			 z_order_link) {
 		/* Ignore views not visible on the current output */
-		if (!(ev->output_mask & (1u << output->id)))
+		/* TODO: turn this into assert once z_order_list is pruned. */
+		if (!(pnode->view->output_mask & (1u << output->id)))
 			continue;
-		if (ev->surface->touched)
+		if (pnode->surface->touched)
 			continue;
-		ev->surface->touched = true;
+		pnode->surface->touched = true;
 
-		surface_flush_damage(ev->surface);
+		surface_flush_damage(pnode->surface);
 
 		/* Both the renderer and the backend have seen the buffer
 		 * by now. If renderer needs the buffer, it has its own
@@ -2621,10 +2626,10 @@
 		 * reference now, and allow early buffer release. This enables
 		 * clients to use single-buffering.
 		 */
-		if (!ev->surface->keep_buffer) {
-			weston_buffer_reference(&ev->surface->buffer_ref, NULL);
+		if (!pnode->surface->keep_buffer) {
+			weston_buffer_reference(&pnode->surface->buffer_ref, NULL);
 			weston_buffer_release_reference(
-				&ev->surface->buffer_release_ref, NULL);
+				&pnode->surface->buffer_release_ref, NULL);
 		}
 	}
 }