[Spice-devel] [PATCH 1/6] server/tests: refactor test_display_base

Alon Levy alevy at redhat.com
Thu Apr 26 09:48:18 PDT 2012


On Thu, Apr 19, 2012 at 01:48:38PM +0300, Alon Levy wrote:

Ping.

> ---
>  server/tests/test_display_base.c |   79 ++++++++++++++++++++++----------------
>  1 file changed, 45 insertions(+), 34 deletions(-)
> 
> diff --git a/server/tests/test_display_base.c b/server/tests/test_display_base.c
> index f6c3f6b..e376195 100644
> --- a/server/tests/test_display_base.c
> +++ b/server/tests/test_display_base.c
> @@ -140,45 +140,23 @@ static void draw_pos(int t, int *x, int *y)
>  #endif
>  }
>  
> -static SimpleSpiceUpdate *test_spice_create_update_draw(uint32_t surface_id, int t)
> +/* bitmap is freeds, so it must be allocated with malloc */
> +SimpleSpiceUpdate *test_spice_create_update_from_bitmap(uint32_t surface_id,
> +        QXLRect bbox, uint8_t *bitmap)
>  {
>      SimpleSpiceUpdate *update;
>      QXLDrawable *drawable;
>      QXLImage *image;
> -    int top, left;
> -    draw_pos(t, &left, &top);
> -    QXLRect bbox = {
> -        .top = top,
> -        .left = left,
> -    };
> -    uint8_t *dst;
> -    int bw, bh;
> -    int i;
> +    uint32_t bw, bh;
>  
> -    if ((t % angle_parts) == 0) {
> -        c_i++;
> -    }
> -
> -    if(surface_id != 0) {
> -        color = (color + 1) % 2;
> -    } else {
> -        color = surface_id;
> -    }
> -
> -    unique++;
> +    bh = bbox.bottom - bbox.top;
> +    bw = bbox.right - bbox.left;
>  
>      update   = calloc(sizeof(*update), 1);
> +    update->bitmap = bitmap;
>      drawable = &update->drawable;
>      image    = &update->image;
>  
> -    bw       = g_primary_width/SINGLE_PART;
> -    bh       = 48;
> -
> -    bbox.right = bbox.left + bw;
> -    bbox.bottom = bbox.top + bh;
> -    update->bitmap = malloc(bw * bh * 4);
> -    //printf("allocated %p, %p\n", update, update->bitmap);
> -
>      drawable->surface_id      = surface_id;
>  
>      drawable->bbox            = bbox;
> @@ -201,11 +179,43 @@ static SimpleSpiceUpdate *test_spice_create_update_draw(uint32_t surface_id, int
>      image->bitmap.stride     = bw * 4;
>      image->descriptor.width  = image->bitmap.x = bw;
>      image->descriptor.height = image->bitmap.y = bh;
> -    image->bitmap.data = (intptr_t)(update->bitmap);
> +    image->bitmap.data = (intptr_t)bitmap;
>      image->bitmap.palette = 0;
>      image->bitmap.format = SPICE_BITMAP_FMT_32BIT;
>  
> -    dst = update->bitmap;
> +    set_cmd(&update->ext, QXL_CMD_DRAW, (intptr_t)drawable);
> +
> +    return update;
> +}
> +
> +static SimpleSpiceUpdate *test_spice_create_update_draw(uint32_t surface_id, int t)
> +{
> +    int top, left;
> +    uint8_t *dst;
> +    uint8_t *bitmap;
> +    int bw, bh;
> +    int i;
> +    QXLRect bbox;
> +
> +    draw_pos(t, &left, &top);
> +    if ((t % angle_parts) == 0) {
> +        c_i++;
> +    }
> +
> +    if (surface_id != 0) {
> +        color = (color + 1) % 2;
> +    } else {
> +        color = surface_id;
> +    }
> +
> +    unique++;
> +
> +    bw       = g_primary_width/SINGLE_PART;
> +    bh       = 48;
> +
> +    bitmap = dst = malloc(bw * bh * 4);
> +    //printf("allocated %p\n", dst);
> +
>      for (i = 0 ; i < bh * bw ; ++i, dst+=4) {
>          *dst = (color+i % 255);
>          *(dst+((1+c_i)%3)) = 255 - color;
> @@ -213,9 +223,9 @@ static SimpleSpiceUpdate *test_spice_create_update_draw(uint32_t surface_id, int
>          *(dst+((3+c_i)%3)) = 0;
>      }
>  
> -    set_cmd(&update->ext, QXL_CMD_DRAW, (intptr_t)drawable);
> -
> -    return update;
> +    bbox.left = left; bbox.top = top;
> +    bbox.right = left + bw; bbox.bottom = top + bh;
> +    return test_spice_create_update_from_bitmap(surface_id, bbox, bitmap);
>  }
>  
>  static SimpleSpiceUpdate *test_spice_create_update_copy_bits(uint32_t surface_id)
> @@ -440,6 +450,7 @@ static void produce_command(void)
>              break;
>          }
>  
> +        /* Drawing commands, they all push a command to the command ring */
>          case SIMPLE_COPY_BITS:
>          case SIMPLE_DRAW: {
>              SimpleSpiceUpdate *update;
> -- 
> 1.7.10
> 
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/spice-devel


More information about the Spice-devel mailing list