]> git.eshelyaron.com Git - emacs.git/commitdiff
(xftfont_open): Make sure that Xrender extension is added
authorYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Mon, 11 May 2009 09:30:34 +0000 (09:30 +0000)
committerYAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
Mon, 11 May 2009 09:30:34 +0000 (09:30 +0000)
before Xft one (Bug#1696).

src/ChangeLog
src/xftfont.c

index 4e774d027f0c96c6bdf95de460062ed39b09ac45..e4afbc9298a5874de4b1decaa95385272565bdf1 100644 (file)
@@ -3,6 +3,9 @@
        * gtkutil.c (xg_frame_set_char_size): Set frame pixel width/height to
        what we expect to get in the next ConfigureNotify event.
 
+       * xftfont.c (xftfont_open): Make sure that Xrender extension is added
+       before Xft one (Bug#1696).
+
 2009-05-07  David Reitter  <david.reitter@gmail.com>
 
        * nsfns.m (Fx_display_planes): Compute bitplanes using
index af0feb9b7e6b48461feb73dafeee266ab5306da7..4a1b488bcf9d7efc42968aacf00ead5afae67c03 100644 (file)
@@ -274,6 +274,16 @@ xftfont_open (f, entity, pixel_size)
 
 
   BLOCK_INPUT;
+  /* Make sure that the Xrender extension is added before the Xft one.
+     Otherwise, the close-display hook set by Xft is called after the
+     one for Xrender, and the former tries to re-add the latter.  This
+     results in inconsistency of internal states and leads to X
+     protocol error when one reconnects to the same X server.
+     (Bug#1696)  */
+  {
+    int event_base, error_base;
+    XRenderQueryExtension (display, &event_base, &error_base);
+  }
   match = XftFontMatch (display, FRAME_X_SCREEN_NUMBER (f), pat, &result);
   FcPatternDestroy (pat);
   xftfont = XftFontOpenPattern (display, match);