[PATCH 2/2] simple-shm: Draw the test motif surrounded by a white border
Pekka Paalanen
ppaalanen at gmail.com
Tue Oct 2 22:32:07 PDT 2012
On Tue, 2 Oct 2012 21:15:36 +0200
Hársszegi Tibor <Tibor.Harsszegi at scientificgames.hu> wrote:
> Call me lame, but what happens with "small" windows (e.g <20x20)?
simple-shm is not resizeable.
> ________________________________________
> Feladó: Rob Bradford [rob at robster.org.uk]
> Küldve: 2012. október 2. 19:03
> Címzett: wayland-devel at lists.freedesktop.org
> Másolatot kap: Rob Bradford
> Tárgy: [PATCH 2/2] simple-shm: Draw the test motif surrounded by a white border
>
> From: Rob Bradford <rob at linux.intel.com>
>
> We can then use a wl_surface_damage to just trigger the compositor to update
> just a selected region of the buffer and thus test damaging a sub region.
> ---
> clients/simple-shm.c | 20 +++++++++++++-------
> 1 file changed, 13 insertions(+), 7 deletions(-)
Rob,
both patches look good to me, didn't test.
Thanks,
pq
>
> diff --git a/clients/simple-shm.c b/clients/simple-shm.c
> index e8dc620..d0aeeb2 100644
> --- a/clients/simple-shm.c
> +++ b/clients/simple-shm.c
> @@ -160,10 +160,10 @@ destroy_window(struct window *window)
> }
>
> static void
> -paint_pixels(void *image, int width, int height, uint32_t time)
> +paint_pixels(void *image, int padding, int width, int height, uint32_t time)
> {
> - const int halfh = height / 2;
> - const int halfw = width / 2;
> + const int halfh = padding + (height - padding * 2) / 2;
> + const int halfw = padding + (width - padding * 2) / 2;
> int ir, or;
> uint32_t *pixel = image;
> int y;
> @@ -174,11 +174,13 @@ paint_pixels(void *image, int width, int height, uint32_t time)
> or *= or;
> ir *= ir;
>
> - for (y = 0; y < height; y++) {
> + pixel += padding * width;
> + for (y = padding; y < height - padding; y++) {
> int x;
> int y2 = (y - halfh) * (y - halfh);
>
> - for (x = 0; x < width; x++) {
> + pixel += padding;
> + for (x = padding; x < width - padding; x++) {
> uint32_t v;
>
> /* squared distance from center */
> @@ -198,6 +200,8 @@ paint_pixels(void *image, int width, int height, uint32_t time)
>
> *pixel++ = v;
> }
> +
> + pixel += padding;
> }
> }
>
> @@ -208,9 +212,9 @@ redraw(void *data, struct wl_callback *callback, uint32_t time)
> {
> struct window *window = data;
>
> - paint_pixels(window->shm_data, window->width, window->height, time);
> + paint_pixels(window->shm_data, 20, window->width, window->height, time);
> wl_surface_damage(window->surface,
> - 0, 0, window->width, window->height);
> + 20, 20, window->width - 40, window->height - 40);
>
> if (callback)
> wl_callback_destroy(callback);
> @@ -329,7 +333,9 @@ main(int argc, char **argv)
> sigint.sa_flags = SA_RESETHAND;
> sigaction(SIGINT, &sigint, NULL);
>
> + memset(window->shm_data, 0xff, window->width * window->height * 4);
> wl_surface_attach(window->surface, window->buffer, 0, 0);
> +
> redraw(window, NULL, 0);
>
> while (running)
> --
> 1.7.11.2
More information about the wayland-devel
mailing list