diff options
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 2015-02-14 12:44:46 +0900 |
---|---|---|
committer | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> | 2015-02-14 12:45:52 +0900 |
commit | 335ab266490fae0472f2b709ca3ecfe21c931fee (patch) | |
tree | 1397b033090d2db7a9424ae850c2cd9d2735ae8a | |
parent | dddcc0e78452f2186c132823a33a174d2596ba33 (diff) |
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.
-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 e361fe286e..648544928f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2015-02-14 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> + + * 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. + 2015-02-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> Jan Djärv <jan.h.d@swipnet.se> diff --git a/src/fringe.c b/src/fringe.c index 27b1003555..fcc5207b06 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) unsigned short *bits = fb->bits; int j; +#ifdef USE_CAIRO + for (j = 0; j < fb->height; j++) + { + unsigned short b = *bits; +#ifdef WORDS_BIGENDIAN + *bits++ = (b << (16 - fb->width)); +#else + b = (unsigned short)((swap_nibble[b & 0xf] << 12) + | (swap_nibble[(b>>4) & 0xf] << 8) + | (swap_nibble[(b>>8) & 0xf] << 4) + | (swap_nibble[(b>>12) & 0xf])); + *bits++ = (b >> (16 - fb->width)); +#endif + } +#else /* not USE_CAIRO */ if (fb->width <= 8) { unsigned char *cbits = (unsigned char *)fb->bits; @@ -1433,6 +1448,7 @@ init_fringe_bitmap (int which, struct fringe_bitmap *fb, int once_p) *bits++ = b; } } +#endif /* not USE_CAIRO */ #endif /* HAVE_X_WINDOWS */ } diff --git a/src/xterm.c b/src/xterm.c index 1074862ca3..49d9c32211 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -518,6 +518,7 @@ x_cr_define_fringe_bitmap (which, bits, h, wd) data += stride; } + cairo_surface_mark_dirty (surface); pattern = cairo_pattern_create_for_surface (surface); cairo_surface_destroy (surface); |