Changeset 3556
- Timestamp:
- 07/19/09 22:37:12 (4 years ago)
- Location:
- libcaca/trunk
- Files:
-
- 2 edited
-
caca/string.c (modified) (2 diffs)
-
tests/dirty.cpp (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/caca/string.c
r3554 r3556 449 449 continue; 450 450 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 } 453 458 } 454 459 } 455 460 else 456 461 { 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 } 459 470 } 460 471 … … 467 478 } 468 479 469 caca_add_dirty_rect(dst, starti + x - bleed_left, startj + y,470 endi - starti + bleed_left + bleed_right,471 endj - startj);472 480 473 481 return 0; -
libcaca/trunk/tests/dirty.cpp
r3513 r3556 29 29 CPPUNIT_TEST(test_put_char_not_dirty); 30 30 CPPUNIT_TEST(test_box); 31 CPPUNIT_TEST(test_blit); 31 32 CPPUNIT_TEST_SUITE_END(); 32 33 … … 186 187 } 187 188 189 void test_blit() 190 { 191 caca_canvas_t *cv, *cv2; 192 int i, dx, dy, dw, dh; 193 194 cv = caca_create_canvas(WIDTH, HEIGHT); 195 caca_clear_dirty_rect_list(cv); 196 cv2 = caca_create_canvas(2, 2); 197 caca_fill_box(cv2, 0, 0, 2, 1, 'x'); 198 199 caca_blit(cv, 1, 1, cv2, NULL); 200 i = caca_get_dirty_rect_count(cv); 201 CPPUNIT_ASSERT_EQUAL(i, 1); 202 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 203 204 /* Check that blitting a canvas make a dirty rectangle 205 * only for modified lines */ 206 CPPUNIT_ASSERT(dx == 1); 207 CPPUNIT_ASSERT(dy == 1); 208 CPPUNIT_ASSERT(dw >= 2); 209 CPPUNIT_ASSERT(dh == 1); 210 } 211 188 212 private: 189 213 static int const WIDTH = 80, HEIGHT = 50;
Note: See TracChangeset
for help on using the changeset viewer.
