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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/spice-devel