# HG changeset patch # User YAMAMOTO Mitsuharu # Date 1181722904 0 # Node ID 22b5fa7b116aee53a94729d0e82bc912d620cc61 # Parent 25e0090e9ec6ed19fcb251d547f96d2d042df6c0 (lookup_image): Save frame foreground and background colors. (search_image_cache): Check if saved and current frame colors match. diff -r 25e0090e9ec6 -r 22b5fa7b116a src/image.c --- 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