emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/src/font.c,v


From: Kenichi Handa
Subject: [Emacs-diffs] Changes to emacs/src/font.c,v
Date: Mon, 16 Jun 2008 07:32:05 +0000

CVSROOT:        /cvsroot/emacs
Module name:    emacs
Changes by:     Kenichi Handa <handa>   08/06/16 07:32:04

Index: font.c
===================================================================
RCS file: /cvsroot/emacs/emacs/src/font.c,v
retrieving revision 1.55
retrieving revision 1.56
diff -u -b -r1.55 -r1.56
--- font.c      16 Jun 2008 02:04:45 -0000      1.55
+++ font.c      16 Jun 2008 07:32:04 -0000      1.56
@@ -2429,26 +2429,6 @@
 }
 
 
-/* CHeck a lispy font object corresponding to FONT.  */
-
-int
-font_check_object (font)
-     struct font *font;
-{
-  Lisp_Object tail, elt;
-
-  for (tail = font->props[FONT_OBJLIST_INDEX]; CONSP (tail);
-       tail = XCDR (tail))
-    {
-      elt = XCAR (tail);
-      if (font == XFONT_OBJECT (elt))
-       return 1;
-    }
-  return 0;
-}
-
-
-
 /* Font cache
 
    Each font backend has the callback function get_cache, and it
@@ -2563,10 +2543,13 @@
                      Lisp_Object val = XCAR (objlist);
                      struct font *font = XFONT_OBJECT (val);
 
+                     if (! NILP (AREF (val, FONT_TYPE_INDEX)))
+                       {
                      font_assert (font && driver == font->driver);
                      driver->close (f, font);
                      num_fonts--;
                    }
+                   }
                  if (driver->free_entity)
                    driver->free_entity (entity);
                }
@@ -2754,7 +2737,8 @@
 
   for (objlist = AREF (entity, FONT_OBJLIST_INDEX); CONSP (objlist);
        objlist = XCDR (objlist))
-    if (XFONT_OBJECT (XCAR (objlist))->pixel_size == pixel_size)
+    if (! NILP (AREF (XCAR (objlist), FONT_TYPE_INDEX))
+       && XFONT_OBJECT (XCAR (objlist))->pixel_size == pixel_size)
       return  XCAR (objlist);
 
   val = AREF (entity, FONT_TYPE_INDEX);
@@ -2770,7 +2754,7 @@
     return Qnil;
   ASET (entity, FONT_OBJLIST_INDEX,
        Fcons (font_object, AREF (entity, FONT_OBJLIST_INDEX)));
-  ASET (font_object, FONT_OBJLIST_INDEX, AREF (entity, FONT_OBJLIST_INDEX));
+  ASET (font_object, FONT_OBJLIST_INDEX, Qnil);
   num_fonts++;
 
   font = XFONT_OBJECT (font_object);
@@ -2807,28 +2791,17 @@
      Lisp_Object font_object;
 {
   struct font *font = XFONT_OBJECT (font_object);
-  Lisp_Object objlist;
-  Lisp_Object tail, prev = Qnil;
 
-  objlist = AREF (font_object, FONT_OBJLIST_INDEX);
-  for (prev = Qnil, tail = objlist; CONSP (tail);
-       prev = tail, tail = XCDR (tail))
-    if (EQ (font_object, XCAR (tail)))
-      {
+  if (NILP (AREF (font_object, FONT_TYPE_INDEX)))
+    /* Already closed.  */
+    return;
        font_add_log ("close", font_object, Qnil);
        font->driver->close (f, font);
 #ifdef HAVE_WINDOW_SYSTEM
        font_assert (FRAME_X_DISPLAY_INFO (f)->n_fonts);
        FRAME_X_DISPLAY_INFO (f)->n_fonts--;
 #endif
-       if (NILP (prev))
-         ASET (font_object, FONT_OBJLIST_INDEX, XCDR (objlist));
-       else
-         XSETCDR (prev, XCDR (objlist));
        num_fonts--;
-       return;
-      }
-  abort ();
 }
 
 
@@ -3544,7 +3517,6 @@
   if (! face->font)
     return Qnil;
 
-  font_assert (font_check_object ((struct font *) face->font));
   XSETFONT (font_object, face->font);
   return font_object;
 }




reply via email to

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