diff options
| author | YAMAMOTO Mitsuharu | 2015-02-14 12:44:46 +0900 |
|---|---|---|
| committer | YAMAMOTO Mitsuharu | 2015-02-14 12:45:52 +0900 |
| commit | 335ab266490fae0472f2b709ca3ecfe21c931fee (patch) | |
| tree | 1397b033090d2db7a9424ae850c2cd9d2735ae8a /src | |
| parent | dddcc0e78452f2186c132823a33a174d2596ba33 (diff) | |
| download | emacs-335ab266490fae0472f2b709ca3ecfe21c931fee.tar.gz emacs-335ab266490fae0472f2b709ca3ecfe21c931fee.zip | |
Fix fringe bitmap initialization for cairo.
* fringe.c (init_fringe_bitmap) [USE_CAIRO]: Adjust bitmap data for
cairo image surface.
* xterm.c (x_cr_define_fringe_bitmap): Call cairo_surface_mark_dirty.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 7 | ||||
| -rw-r--r-- | src/fringe.c | 16 | ||||
| -rw-r--r-- | src/xterm.c | 1 |
3 files changed, 24 insertions, 0 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index e361fe286e4..648544928fb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,10 @@ | |||
| 1 | 2015-02-14 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | ||
| 2 | |||
| 3 | * fringe.c (init_fringe_bitmap) [USE_CAIRO]: Adjust bitmap data for | ||
| 4 | cairo image surface. | ||
| 5 | |||
| 6 | * xterm.c (x_cr_define_fringe_bitmap): Call cairo_surface_mark_dirty. | ||
| 7 | |||
| 1 | 2015-02-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 8 | 2015-02-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
| 2 | Jan Djärv <jan.h.d@swipnet.se> | 9 | Jan Djärv <jan.h.d@swipnet.se> |
| 3 | 10 | ||
diff --git a/src/fringe.c b/src/fringe.c index 27b10035556..fcc5207b062 100644 --- a/src/fringe.c +++ b/src/fringe.c | |||
| @@ -1405,6 +1405,21 @@ init_fringe_bitmap (int which, struct fringe_bitmap *fb, int once_p) | |||
| 1405 | unsigned short *bits = fb->bits; | 1405 | unsigned short *bits = fb->bits; |
| 1406 | int j; | 1406 | int j; |
| 1407 | 1407 | ||
| 1408 | #ifdef USE_CAIRO | ||
| 1409 | for (j = 0; j < fb->height; j++) | ||
| 1410 | { | ||
| 1411 | unsigned short b = *bits; | ||
| 1412 | #ifdef WORDS_BIGENDIAN | ||
| 1413 | *bits++ = (b << (16 - fb->width)); | ||
| 1414 | #else | ||
| 1415 | b = (unsigned short)((swap_nibble[b & 0xf] << 12) | ||
| 1416 | | (swap_nibble[(b>>4) & 0xf] << 8) | ||
| 1417 | | (swap_nibble[(b>>8) & 0xf] << 4) | ||
| 1418 | | (swap_nibble[(b>>12) & 0xf])); | ||
| 1419 | *bits++ = (b >> (16 - fb->width)); | ||
| 1420 | #endif | ||
| 1421 | } | ||
| 1422 | #else /* not USE_CAIRO */ | ||
| 1408 | if (fb->width <= 8) | 1423 | if (fb->width <= 8) |
| 1409 | { | 1424 | { |
| 1410 | unsigned char *cbits = (unsigned char *)fb->bits; | 1425 | unsigned char *cbits = (unsigned char *)fb->bits; |
| @@ -1433,6 +1448,7 @@ init_fringe_bitmap (int which, struct fringe_bitmap *fb, int once_p) | |||
| 1433 | *bits++ = b; | 1448 | *bits++ = b; |
| 1434 | } | 1449 | } |
| 1435 | } | 1450 | } |
| 1451 | #endif /* not USE_CAIRO */ | ||
| 1436 | #endif /* HAVE_X_WINDOWS */ | 1452 | #endif /* HAVE_X_WINDOWS */ |
| 1437 | 1453 | ||
| 1438 | } | 1454 | } |
diff --git a/src/xterm.c b/src/xterm.c index 1074862ca3c..49d9c32211c 100644 --- a/src/xterm.c +++ b/src/xterm.c | |||
| @@ -518,6 +518,7 @@ x_cr_define_fringe_bitmap (which, bits, h, wd) | |||
| 518 | data += stride; | 518 | data += stride; |
| 519 | } | 519 | } |
| 520 | 520 | ||
| 521 | cairo_surface_mark_dirty (surface); | ||
| 521 | pattern = cairo_pattern_create_for_surface (surface); | 522 | pattern = cairo_pattern_create_for_surface (surface); |
| 522 | cairo_surface_destroy (surface); | 523 | cairo_surface_destroy (surface); |
| 523 | 524 | ||