emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] cairo 335ab26: Fix fringe bitmap initialization for cairo.


From: YAMAMOTO Mitsuharu
Subject: [Emacs-diffs] cairo 335ab26: Fix fringe bitmap initialization for cairo.
Date: Sat, 14 Feb 2015 03:47:27 +0000

branch: cairo
commit 335ab266490fae0472f2b709ca3ecfe21c931fee
Author: YAMAMOTO Mitsuharu <address@hidden>
Commit: YAMAMOTO Mitsuharu <address@hidden>

    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.
---
 src/ChangeLog |    7 +++++++
 src/fringe.c  |   16 ++++++++++++++++
 src/xterm.c   |    1 +
 3 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index e361fe2..6485449 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2015-02-14  YAMAMOTO Mitsuharu  <address@hidden>
+
+       * 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  <address@hidden>
            Jan Djärv  <address@hidden>
 
diff --git a/src/fringe.c b/src/fringe.c
index 27b1003..fcc5207 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 1074862..49d9c32 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);
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]