Send surface enter/leave events

These new protocol events allow us to tell which outputs a surface is on, and
potentially update where we allocate our buffers from.

Signed-off-by: Casey Dahlin <cdahlin@redhat.com>
diff --git a/src/compositor.h b/src/compositor.h
index 0ef342b..648b045 100644
--- a/src/compositor.h
+++ b/src/compositor.h
@@ -76,6 +76,7 @@
 	uint32_t id;
 
 	struct wl_list link;
+	struct wl_list resource_list;
 	struct wl_global *global;
 	struct weston_compositor *compositor;
 	struct weston_matrix matrix;
@@ -339,6 +340,12 @@
 	 */
 	struct weston_output *output;
 
+	/*
+	 * A more complete representation of all outputs this surface is
+	 * displayed on.
+	 */
+	uint32_t output_mask;
+
 	struct wl_list frame_callback_list;
 
 	EGLImageKHR image;