Revision 23bfe28f ui/vnc.c

b/ui/vnc.c
2383 2383
    uint8_t *guest_row;
2384 2384
    uint8_t *server_row;
2385 2385
    int cmp_bytes;
2386
    unsigned long width_mask[VNC_DIRTY_WORDS];
2387 2386
    VncState *vs;
2388 2387
    int has_dirty = 0;
2389 2388

  
......
2399 2398
     * Check and copy modified bits from guest to server surface.
2400 2399
     * Update server dirty map.
2401 2400
     */
2402
    bitmap_set(width_mask, 0, (ds_get_width(vd->ds) / 16));
2403
    bitmap_clear(width_mask, (ds_get_width(vd->ds) / 16),
2404
                 VNC_DIRTY_WORDS * BITS_PER_LONG);
2405 2401
    cmp_bytes = 16 * ds_get_bytes_per_pixel(vd->ds);
2406 2402
    guest_row  = vd->guest.ds->data;
2407 2403
    server_row = vd->server->data;
2408 2404
    for (y = 0; y < vd->guest.ds->height; y++) {
2409
        if (bitmap_intersects(vd->guest.dirty[y], width_mask, VNC_DIRTY_WORDS)) {
2405
        if (!bitmap_empty(vd->guest.dirty[y], VNC_DIRTY_BITS)) {
2410 2406
            int x;
2411 2407
            uint8_t *guest_ptr;
2412 2408
            uint8_t *server_ptr;

Also available in: Unified diff