changeset 81365:22b5fa7b116a

(lookup_image): Save frame foreground and background colors. (search_image_cache): Check if saved and current frame colors match.
author YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
date Wed, 13 Jun 2007 08:21:44 +0000
parents 25e0090e9ec6
children d2076a0fec06
files src/image.c
diffstat 1 files changed, 5 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/image.c	Wed Jun 13 08:21:35 2007 +0000
+++ b/src/image.c	Wed Jun 13 08:21:44 2007 +0000
@@ -1647,6 +1647,7 @@
 
   /* If the image spec does not specify a background color, the cached
      image must have the same background color as the current frame.
+     Likewise for the foreground color of the cached monochrome image.
      The following code be improved.  For example, jpeg does not
      support transparency, but currently a jpeg image spec won't match
      a cached spec created with a different frame background.  The
@@ -1656,8 +1657,8 @@
   for (img = c->buckets[i]; img; img = img->next)
     if (img->hash == hash
 	&& !NILP (Fequal (img->spec, spec))
-	&& (STRINGP (specified_bg)
-	    || img->background == FRAME_BACKGROUND_PIXEL (f)))
+	&& img->frame_foreground == FRAME_FOREGROUND_PIXEL (f)
+	&& img->frame_background == FRAME_BACKGROUND_PIXEL (f))
       break;
   return img;
 }
@@ -1929,6 +1930,8 @@
       img = make_image (spec, hash);
       cache_image (f, img);
       img->load_failed_p = img->type->load (f, img) == 0;
+      img->frame_foreground = FRAME_FOREGROUND_PIXEL (f);
+      img->frame_background = FRAME_BACKGROUND_PIXEL (f);
 
       /* If we can't load the image, and we don't have a width and
 	 height, use some arbitrary width and height so that we can