screen-share: align read_pixels call with screenshooter
Calculate y_orig separately first makes it easer to understand the code and aligns with how pixels are read in screenshooter.c. Signed-off-by: Stefan Agner <stefan@agner.ch>
This commit is contained in:
+10
-10
@@ -818,7 +818,7 @@ shared_output_repainted(struct wl_listener *listener, void *data)
|
|||||||
pixman_region32_t damage;
|
pixman_region32_t damage;
|
||||||
struct ss_shm_buffer *sb;
|
struct ss_shm_buffer *sb;
|
||||||
int32_t x, y, width, height, stride;
|
int32_t x, y, width, height, stride;
|
||||||
int i, nrects, do_yflip;
|
int i, nrects, do_yflip, y_orig;
|
||||||
pixman_box32_t *r;
|
pixman_box32_t *r;
|
||||||
uint32_t *cache_data;
|
uint32_t *cache_data;
|
||||||
|
|
||||||
@@ -876,19 +876,19 @@ shared_output_repainted(struct wl_listener *listener, void *data)
|
|||||||
width = r[i].x2 - r[i].x1;
|
width = r[i].x2 - r[i].x1;
|
||||||
height = r[i].y2 - r[i].y1;
|
height = r[i].y2 - r[i].y1;
|
||||||
|
|
||||||
if (do_yflip) {
|
if (do_yflip)
|
||||||
so->output->compositor->renderer->read_pixels(
|
y_orig = so->output->current_mode->height - r[i].y2;
|
||||||
so->output, PIXMAN_a8r8g8b8, so->tmp_data,
|
else
|
||||||
x, so->output->current_mode->height - r[i].y2,
|
y_orig = y;
|
||||||
width, height);
|
|
||||||
|
|
||||||
|
so->output->compositor->renderer->read_pixels(
|
||||||
|
so->output, PIXMAN_a8r8g8b8, so->tmp_data,
|
||||||
|
x, y_orig, width, height);
|
||||||
|
|
||||||
|
if (do_yflip) {
|
||||||
pixman_blt(so->tmp_data, cache_data, -width, stride,
|
pixman_blt(so->tmp_data, cache_data, -width, stride,
|
||||||
32, 32, 0, 1 - height, x, y, width, height);
|
32, 32, 0, 1 - height, x, y, width, height);
|
||||||
} else {
|
} else {
|
||||||
so->output->compositor->renderer->read_pixels(
|
|
||||||
so->output, PIXMAN_a8r8g8b8, so->tmp_data,
|
|
||||||
x, y, width, height);
|
|
||||||
|
|
||||||
pixman_blt(so->tmp_data, cache_data, width, stride,
|
pixman_blt(so->tmp_data, cache_data, width, stride,
|
||||||
32, 32, 0, 0, x, y, width, height);
|
32, 32, 0, 0, x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user