compositor: Remove weston_read_pixels functionality
We can just do glReadPixels from the frame signal instead now.
This commit is contained in:
@@ -147,7 +147,7 @@ android_output_repaint(struct weston_output *base, pixman_region32_t *damage)
|
|||||||
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
|
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
|
||||||
weston_surface_draw(surface, &output->base, damage);
|
weston_surface_draw(surface, &output->base, damage);
|
||||||
|
|
||||||
weston_output_do_read_pixels(&output->base);
|
wl_signal_emit(&output->frame_signal, &output->frame_time);
|
||||||
|
|
||||||
ret = eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
|
ret = eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
|
||||||
if (ret == EGL_FALSE && !errored) {
|
if (ret == EGL_FALSE && !errored) {
|
||||||
|
|||||||
@@ -305,7 +305,7 @@ drm_output_render(struct drm_output *output, pixman_region32_t *damage)
|
|||||||
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
|
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
|
||||||
weston_surface_draw(surface, &output->base, damage);
|
weston_surface_draw(surface, &output->base, damage);
|
||||||
|
|
||||||
weston_output_do_read_pixels(&output->base);
|
wl_signal_emit(&output->frame_signal, &output->frame_time);
|
||||||
|
|
||||||
eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
|
eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
|
||||||
bo = gbm_surface_lock_front_buffer(output->surface);
|
bo = gbm_surface_lock_front_buffer(output->surface);
|
||||||
|
|||||||
@@ -347,7 +347,7 @@ wayland_output_repaint(struct weston_output *output_base,
|
|||||||
|
|
||||||
draw_border(output);
|
draw_border(output);
|
||||||
|
|
||||||
weston_output_do_read_pixels(&output->base);
|
wl_signal_emit(&output->frame_signal, &output->frame_time);
|
||||||
|
|
||||||
eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
|
eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
|
||||||
callback = wl_surface_frame(output->parent.surface);
|
callback = wl_surface_frame(output->parent.surface);
|
||||||
|
|||||||
@@ -270,7 +270,7 @@ x11_output_repaint(struct weston_output *output_base,
|
|||||||
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
|
wl_list_for_each_reverse(surface, &compositor->base.surface_list, link)
|
||||||
weston_surface_draw(surface, &output->base, damage);
|
weston_surface_draw(surface, &output->base, damage);
|
||||||
|
|
||||||
weston_output_do_read_pixels(&output->base);
|
wl_signal_emit(&output->frame_signal, &output->frame_time);
|
||||||
|
|
||||||
eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
|
eglSwapBuffers(compositor->base.egl_display, output->egl_surface);
|
||||||
|
|
||||||
|
|||||||
@@ -2845,7 +2845,6 @@ weston_output_init(struct weston_output *output, struct weston_compositor *c,
|
|||||||
output->mm_width = width;
|
output->mm_width = width;
|
||||||
output->mm_height = height;
|
output->mm_height = height;
|
||||||
output->dirty = 1;
|
output->dirty = 1;
|
||||||
wl_list_init(&output->read_pixels_list);
|
|
||||||
|
|
||||||
weston_output_init_zoom(output);
|
weston_output_init_zoom(output);
|
||||||
|
|
||||||
@@ -2865,22 +2864,6 @@ weston_output_init(struct weston_output *output, struct weston_compositor *c,
|
|||||||
output, bind_output);
|
output, bind_output);
|
||||||
}
|
}
|
||||||
|
|
||||||
WL_EXPORT void
|
|
||||||
weston_output_do_read_pixels(struct weston_output *output)
|
|
||||||
{
|
|
||||||
struct weston_read_pixels *r, *next;
|
|
||||||
|
|
||||||
wl_signal_emit(&output->frame_signal, &output->frame_time);
|
|
||||||
|
|
||||||
glPixelStorei(GL_PACK_ALIGNMENT, 1);
|
|
||||||
wl_list_for_each_safe(r, next, &output->read_pixels_list, link) {
|
|
||||||
glReadPixels(r->x, r->y, r->width, r->height,
|
|
||||||
output->compositor->read_format,
|
|
||||||
GL_UNSIGNED_BYTE, r->data);
|
|
||||||
r->done(r, output);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
compositor_bind(struct wl_client *client,
|
compositor_bind(struct wl_client *client,
|
||||||
void *data, uint32_t version, uint32_t id)
|
void *data, uint32_t version, uint32_t id)
|
||||||
|
|||||||
@@ -144,14 +144,6 @@ enum dpms_enum {
|
|||||||
WESTON_DPMS_OFF
|
WESTON_DPMS_OFF
|
||||||
};
|
};
|
||||||
|
|
||||||
struct weston_read_pixels {
|
|
||||||
void *data;
|
|
||||||
int x, y, width, height;
|
|
||||||
void (*done)(struct weston_read_pixels *read_pixels,
|
|
||||||
struct weston_output *output);
|
|
||||||
struct wl_list link;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct weston_output {
|
struct weston_output {
|
||||||
uint32_t id;
|
uint32_t id;
|
||||||
|
|
||||||
@@ -170,7 +162,6 @@ struct weston_output {
|
|||||||
int repaint_scheduled;
|
int repaint_scheduled;
|
||||||
struct weston_output_zoom zoom;
|
struct weston_output_zoom zoom;
|
||||||
int dirty;
|
int dirty;
|
||||||
struct wl_list read_pixels_list;
|
|
||||||
struct wl_signal frame_signal;
|
struct wl_signal frame_signal;
|
||||||
uint32_t frame_time;
|
uint32_t frame_time;
|
||||||
|
|
||||||
@@ -530,8 +521,6 @@ weston_output_finish_frame(struct weston_output *output, int msecs);
|
|||||||
void
|
void
|
||||||
weston_output_damage(struct weston_output *output);
|
weston_output_damage(struct weston_output *output);
|
||||||
void
|
void
|
||||||
weston_output_do_read_pixels(struct weston_output *output);
|
|
||||||
void
|
|
||||||
weston_compositor_schedule_repaint(struct weston_compositor *compositor);
|
weston_compositor_schedule_repaint(struct weston_compositor *compositor);
|
||||||
void
|
void
|
||||||
weston_compositor_fade(struct weston_compositor *compositor, float tint);
|
weston_compositor_fade(struct weston_compositor *compositor, float tint);
|
||||||
|
|||||||
Reference in New Issue
Block a user