From c5b8e0eaed770ea7ddb85810bafeab9c15b7de92 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Wed, 13 Jun 2007 08:22:12 +0000 Subject: [PATCH] (lookup_image): Save frame foreground and background colors. (search_image_cache): Check if saved and current frame colors match. --- src/ChangeLog | 8 ++++++++ src/image.c | 7 +++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 8ec4efb9852..06d9b481d16 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2007-06-13 YAMAMOTO Mitsuharu + + * dispextern.h (struct image) [HAVE_WINDOW_SYSTEM]: New members + frame_foreground and frame_background. + + * image.c (lookup_image): Save frame foreground and background colors. + (search_image_cache): Check if saved and current frame colors match. + 2007-06-12 Stefan Monnier * regex.c (regex_compile): Remove the `regnum' counter. diff --git a/src/image.c b/src/image.c index 9cfcd5a63f8..36e8a2ecb80 100644 --- a/src/image.c +++ b/src/image.c @@ -1647,6 +1647,7 @@ search_image_cache (f, spec, hash) /* 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 @@ search_image_cache (f, spec, hash) 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 @@ lookup_image (f, spec) 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 -- 2.39.2