compositor: implement presentation_feedback

Implement the presentation.feedback request, and the
presentation_feedback protocol interface. Feedback information is
delivered to clients as the backend reports it, except the refresh
counter (MSC) which is always reported as zero.

Changes in v4:

* add 'flags' argument to 'presented' event without implementation

Changes in v5:

* remove the 'destroy' method implementation for feedback objects
  [Pekka Paalanen: do not leak struct feedback.]

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
v3 Reviewed-by: Mario Kleiner <mario.kleiner.de@gmail.com>
diff --git a/src/compositor.h b/src/compositor.h
index 61b374f..c405589 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -205,6 +205,7 @@
 	uint32_t frame_time; /* presentation timestamp in milliseconds */
 	int disable_planes;
 	int destroying;
+	struct wl_list feedback_list;
 
 	char *make, *model, *serial_number;
 	uint32_t subpixel;
@@ -835,6 +836,9 @@
 	/* wl_surface.frame */
 	struct wl_list frame_callback_list;
 
+	/* presentation.feedback */
+	struct wl_list feedback_list;
+
 	/* wl_surface.set_buffer_transform */
 	/* wl_surface.set_scaling_factor */
 	/* wl_viewport.set */
@@ -874,6 +878,7 @@
 	uint32_t output_mask;
 
 	struct wl_list frame_callback_list;
+	struct wl_list feedback_list;
 
 	struct weston_buffer_reference buffer_ref;
 	struct weston_buffer_viewport buffer_viewport;