compositor: Pass weston_output as the frame_signal argument

The frame time is in weston_output, so passing weston_output itself is
more useful.
diff --git a/src/compositor-android.c b/src/compositor-android.c
index 283518f..02c5224 100644
--- a/src/compositor-android.c
+++ b/src/compositor-android.c
@@ -147,7 +147,7 @@
 	wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
 		weston_surface_draw(surface, &output->base, damage);
 
-	wl_signal_emit(&output->frame_signal, &output->frame_time);
+	wl_signal_emit(&output->base.frame_signal, output);
 
 	ret = eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
 	if (ret == EGL_FALSE && !errored) {
diff --git a/src/compositor-drm.c b/src/compositor-drm.c
index 14b8600..90ed1fd 100644
--- a/src/compositor-drm.c
+++ b/src/compositor-drm.c
@@ -305,7 +305,7 @@
 	wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
 		weston_surface_draw(surface, &output->base, damage);
 
-	wl_signal_emit(&output->frame_signal, &output->frame_time);
+	wl_signal_emit(&output->base.frame_signal, output);
 
 	eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
 	bo = gbm_surface_lock_front_buffer(output->surface);
diff --git a/src/compositor-wayland.c b/src/compositor-wayland.c
index ecaee06..cde7658 100644
--- a/src/compositor-wayland.c
+++ b/src/compositor-wayland.c
@@ -347,7 +347,7 @@
 
 	draw_border(output);
 
-	wl_signal_emit(&output->frame_signal, &output->frame_time);
+	wl_signal_emit(&output->base.frame_signal, output);
 
 	eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
 	callback = wl_surface_frame(output->parent.surface);
diff --git a/src/compositor-x11.c b/src/compositor-x11.c
index ba2b006..a5c1868 100644
--- a/src/compositor-x11.c
+++ b/src/compositor-x11.c
@@ -270,7 +270,7 @@
 	wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
 		weston_surface_draw(surface, &output->base, damage);
 
-	wl_signal_emit(&output->frame_signal, &output->frame_time);
+	wl_signal_emit(&output->base.frame_signal, output);
 
 	eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
 
diff --git a/src/screenshooter.c b/src/screenshooter.c
index 03067a3..2808f03 100644
--- a/src/screenshooter.c
+++ b/src/screenshooter.c
@@ -46,7 +46,6 @@
 	struct wl_listener listener;
 	struct wl_buffer *buffer;
 	struct wl_resource *resource;
-	struct weston_output *output;
 };
 
 static void
@@ -98,7 +97,7 @@
 	struct screenshooter_frame_listener *l =
 		container_of(listener,
 			     struct screenshooter_frame_listener, listener);
-	struct weston_output *output = l->output;
+	struct weston_output *output = data;
 	int32_t stride;
 	uint8_t *pixels, *d, *s;
 
@@ -163,7 +162,6 @@
 
 	l->buffer = buffer;
 	l->resource = resource;
-	l->output = output;
 
 	l->listener.notify = screenshooter_frame_notify;
 	wl_signal_add(&output->frame_signal, &l->listener);
@@ -214,7 +212,6 @@
 }
 
 struct weston_recorder {
-	struct weston_output *output;
 	uint32_t *frame, *rect;
 	uint32_t total;
 	int fd;
@@ -258,8 +255,8 @@
 {
 	struct weston_recorder *recorder =
 		container_of(listener, struct weston_recorder, frame_listener);
-	struct weston_output *output = recorder->output;
-	uint32_t msecs = * (uint32_t *) data;
+	struct weston_output *output = data;
+	uint32_t msecs = output->frame_time;
 	pixman_box32_t *r;
 	pixman_region32_t damage;
 	int i, j, k, n, width, height, run, stride;
@@ -271,8 +268,8 @@
 	struct iovec v[2];
 
 	pixman_region32_init(&damage);
-	pixman_region32_intersect(&damage, &recorder->output->region,
-				  &recorder->output->previous_damage);
+	pixman_region32_intersect(&damage, &output->region,
+				  &output->previous_damage);
 
 	r = pixman_region32_rectangles(&damage, &n);
 	if (n == 0)
@@ -342,7 +339,6 @@
 	struct { uint32_t magic, format, width, height; } header;
 
 	recorder = malloc(sizeof *recorder);
-	recorder->output = output;
 
 	stride = output->current->width;
 	size = stride * 4 * output->current->height;