Ignore:
Timestamp:
07/19/09 22:37:12 (4 years ago)
Author:
pterjan
Message:
  • When blitting, only add dirty rectangles on changed lines, or on changed chars if we have a mask
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/string.c

    r3554 r3556  
    449449                    continue; 
    450450 
    451                 dst->chars[dstix + i] = src->chars[srcix + i]; 
    452                 dst->attrs[dstix + i] = src->attrs[srcix + i]; 
     451                if(dst->chars[dstix + i] != src->chars[srcix + i] || 
     452                   dst->attrs[dstix + i] != src->attrs[srcix + i]) 
     453                { 
     454                    dst->chars[dstix + i] = src->chars[srcix + i]; 
     455                    dst->attrs[dstix + i] = src->attrs[srcix + i]; 
     456                    caca_add_dirty_rect(dst, x + starti + i, y + j, 1, 1); 
     457                } 
    453458            } 
    454459        } 
    455460        else 
    456461        { 
    457             memcpy(dst->chars + dstix, src->chars + srcix, stride * 4); 
    458             memcpy(dst->attrs + dstix, src->attrs + srcix, stride * 4); 
     462            if(memcmp(dst->chars + dstix, src->chars + srcix, stride * 4) || 
     463               memcmp(dst->attrs + dstix, src->attrs + srcix, stride * 4)) 
     464            { 
     465                /* FIXME be more precise ? */ 
     466                memcpy(dst->chars + dstix, src->chars + srcix, stride * 4); 
     467                memcpy(dst->attrs + dstix, src->attrs + srcix, stride * 4); 
     468                caca_add_dirty_rect(dst, x + starti, y + j, stride, 1); 
     469            } 
    459470        } 
    460471 
     
    467478    } 
    468479 
    469     caca_add_dirty_rect(dst, starti + x - bleed_left, startj + y, 
    470                         endi - starti + bleed_left + bleed_right, 
    471                         endj - startj); 
    472480 
    473481    return 0; 
Note: See TracChangeset for help on using the changeset viewer.