Simplify and avoid signal-handling races.
[bpt/emacs.git] / src / ftxfont.c
index 6ebe079..5effe6e 100644 (file)
@@ -21,7 +21,6 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include <config.h>
 #include <stdio.h>
-#include <setjmp.h>
 #include <X11/Xlib.h>
 
 #include "lisp.h"
@@ -43,14 +42,6 @@ static
 #endif
 struct font_driver ftxfont_driver;
 
-/* Prototypes for helper function.  */
-static GC *ftxfont_get_gcs (FRAME_PTR, unsigned long, unsigned long);
-static int ftxfont_draw_bitmap (FRAME_PTR, GC, GC *, struct font *,
-                                unsigned, int, int, XPoint *, int, int *,
-                                int);
-static void ftxfont_draw_background (FRAME_PTR, struct font *, GC,
-                                    int, int, int);
-
 struct ftxfont_frame_data
 {
   /* Background and foreground colors.  */
@@ -107,7 +98,7 @@ ftxfont_get_gcs (FRAME_PTR f, long unsigned int foreground, long unsigned int ba
   new->colors[0].pixel = background;
   new->colors[1].pixel = foreground;
 
-  BLOCK_INPUT;
+  block_input ();
   XQueryColors (FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), new->colors, 2);
   for (i = 1; i < 7; i++)
     {
@@ -124,14 +115,14 @@ ftxfont_get_gcs (FRAME_PTR f, long unsigned int foreground, long unsigned int ba
       new->gcs[i - 1] = XCreateGC (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
                                   GCForeground, &xgcv);
     }
-  UNBLOCK_INPUT;
+  unblock_input ();
 
   if (i < 7)
     {
-      BLOCK_INPUT;
+      block_input ();
       for (i--; i >= 0; i--)
        XFreeGC (FRAME_X_DISPLAY (f), new->gcs[i]);
-      UNBLOCK_INPUT;
+      unblock_input ();
       if (prev)
        prev->next = new->next;
       else if (data)
@@ -143,7 +134,9 @@ ftxfont_get_gcs (FRAME_PTR f, long unsigned int foreground, long unsigned int ba
 }
 
 static int
-ftxfont_draw_bitmap (FRAME_PTR f, GC gc_fore, GC *gcs, struct font *font, unsigned int code, int x, int y, XPoint *p, int size, int *n, int flush)
+ftxfont_draw_bitmap (FRAME_PTR f, GC gc_fore, GC *gcs, struct font *font,
+                     unsigned int code, int x, int y, XPoint *p, int size,
+                     int *n, bool flush)
 {
   struct font_bitmap bitmap;
   unsigned char *b;
@@ -232,13 +225,6 @@ ftxfont_draw_background (FRAME_PTR f, struct font *font, GC gc, int x, int y,
   XSetForeground (FRAME_X_DISPLAY (f), gc, xgcv.foreground);
 }
 
-/* Prototypes for font-driver methods.  */
-static Lisp_Object ftxfont_list (Lisp_Object, Lisp_Object);
-static Lisp_Object ftxfont_match (Lisp_Object, Lisp_Object);
-static Lisp_Object ftxfont_open (FRAME_PTR, Lisp_Object, int);
-static void ftxfont_close (FRAME_PTR, struct font *);
-static int ftxfont_draw (struct glyph_string *, int, int, int, int, int);
-
 static Lisp_Object
 ftxfont_list (Lisp_Object frame, Lisp_Object spec)
 {
@@ -280,7 +266,8 @@ ftxfont_close (FRAME_PTR f, struct font *font)
 }
 
 static int
-ftxfont_draw (struct glyph_string *s, int from, int to, int x, int y, int with_background)
+ftxfont_draw (struct glyph_string *s, int from, int to, int x, int y,
+              bool with_background)
 {
   FRAME_PTR f = s->f;
   struct face *face = s->face;
@@ -295,7 +282,7 @@ ftxfont_draw (struct glyph_string *s, int from, int to, int x, int y, int with_b
 
   n[0] = n[1] = n[2] = n[3] = n[4] = n[5] = n[6] = 0;
 
-  BLOCK_INPUT;
+  block_input ();
   if (with_background)
     ftxfont_draw_background (f, font, s->gc, x, y, s->width);
   code = alloca (sizeof (unsigned) * len);
@@ -345,7 +332,7 @@ ftxfont_draw (struct glyph_string *s, int from, int to, int x, int y, int with_b
        }
     }
 
-  UNBLOCK_INPUT;
+  unblock_input ();
 
   return len;
 }
@@ -355,7 +342,7 @@ ftxfont_end_for_frame (FRAME_PTR f)
 {
   struct ftxfont_frame_data *data = font_get_frame_data (f, &ftxfont_driver);
 
-  BLOCK_INPUT;
+  block_input ();
   while (data)
     {
       struct ftxfont_frame_data *next = data->next;
@@ -366,7 +353,7 @@ ftxfont_end_for_frame (FRAME_PTR f)
       free (data);
       data = next;
     }
-  UNBLOCK_INPUT;
+  unblock_input ();
   font_put_frame_data (f, &ftxfont_driver, NULL);
   return 0;
 }