diff src/xfaces.c @ 92150:1c088baa9d2d

Allow fine-grained image-cache flushing. * dispextern.h (struct image): Add `dependencies' field. (clear_image_caches): Change arg to Lisp_Object. * image.c (make_image): Initialize `dependencies' field. (clear_image_cache): Change arg to allow fine-grained flushing. Perform the flush even if image-cache-eviction-delay is nil. (clear_image_caches): Change arg to Lisp_Object. (Fclear_image_cache): Expand meaning of the argument. (mark_image): Mark `dependencies' field. * xfaces.c (clear_face_cache): Adapt arg to call to clear_image_caches. (lface_hash): Use XHASH rather than XFASTINT. (face_at_buffer_position): Fix int -> EMACS_INT position. * xdisp.c (next_overlay_change): Fix int -> EMACS_INT position. (select_frame_for_redisplay): Remove code duplication. (redisplay_internal): Adapt arg to call to clear_image_caches.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sun, 24 Feb 2008 13:36:39 +0000
parents 4d9fc08769fa
children ce06567a933d
line wrap: on
line diff
--- a/src/xfaces.c	Sun Feb 24 13:24:12 2008 +0000
+++ b/src/xfaces.c	Sun Feb 24 13:36:39 2008 +0000
@@ -1011,7 +1011,7 @@
 	  if (FRAME_WINDOW_P (f))
 	      clear_face_gcs (FRAME_FACE_CACHE (f));
 	}
-      clear_image_caches (0);
+      clear_image_caches (Qnil);
     }
 #endif /* HAVE_WINDOW_SYSTEM */
 }
@@ -5481,10 +5481,10 @@
   return (hash_string_case_insensitive (v[LFACE_FAMILY_INDEX])
 	  ^ hash_string_case_insensitive (v[LFACE_FOREGROUND_INDEX])
 	  ^ hash_string_case_insensitive (v[LFACE_BACKGROUND_INDEX])
-	  ^ XFASTINT (v[LFACE_WEIGHT_INDEX])
-	  ^ XFASTINT (v[LFACE_SLANT_INDEX])
-	  ^ XFASTINT (v[LFACE_SWIDTH_INDEX])
-	  ^ XFASTINT (v[LFACE_HEIGHT_INDEX]));
+	  ^ XHASH (v[LFACE_WEIGHT_INDEX])
+	  ^ XHASH (v[LFACE_SLANT_INDEX])
+	  ^ XHASH (v[LFACE_SWIDTH_INDEX])
+	  ^ XHASH (v[LFACE_HEIGHT_INDEX]));
 }
 
 
@@ -7755,7 +7755,7 @@
 	font_load_for_face (f, face);
       else
 #endif	/* USE_FONT_BACKEND */
-      load_face_font (f, face);
+	load_face_font (f, face);
       if (face->font)
 	face->fontset = make_fontset_for_ascii_face (f, fontset, face);
       else
@@ -8149,7 +8149,7 @@
 
   /* Look at properties from overlays.  */
   {
-    int next_overlay;
+    EMACS_INT next_overlay;
 
     GET_OVERLAYS_AT (pos, overlay_vec, noverlays, &next_overlay, 0);
     if (next_overlay < endpos)