aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorYAMAMOTO Mitsuharu2015-02-14 12:44:46 +0900
committerYAMAMOTO Mitsuharu2015-02-14 12:45:52 +0900
commit335ab266490fae0472f2b709ca3ecfe21c931fee (patch)
tree1397b033090d2db7a9424ae850c2cd9d2735ae8a /src
parentdddcc0e78452f2186c132823a33a174d2596ba33 (diff)
downloademacs-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/ChangeLog7
-rw-r--r--src/fringe.c16
-rw-r--r--src/xterm.c1
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 @@
12015-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
12015-02-11 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> 82015-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