From 635e7414382d77dd4e0ba60b8c7411f2f972d3ff Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 2 Mar 2007 22:09:18 +0000 Subject: [PATCH] oh dear - when i added load opts - i broke speculative caching. fixed! SVN revision: 28531 --- .../src/lib/engines/common/evas_image_main.c | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/legacy/evas/src/lib/engines/common/evas_image_main.c b/legacy/evas/src/lib/engines/common/evas_image_main.c index 693045540c..dc5f655721 100644 --- a/legacy/evas/src/lib/engines/common/evas_image_main.c +++ b/legacy/evas/src/lib/engines/common/evas_image_main.c @@ -472,8 +472,10 @@ evas_common_image_unstore(RGBA_Image *im) EAPI RGBA_Image * evas_common_image_find(const char *file, const char *key, DATA64 timestamp, RGBA_Image_Loadopts *lo) { + RGBA_Image_Loadopts *lo2; RGBA_Image *im; char buf[4096 + 1024]; + Evas_Object_List *l; if ((!file) && (!key)) return NULL; if (!file) return NULL; @@ -497,6 +499,29 @@ evas_common_image_find(const char *file, const char *key, DATA64 timestamp, RGBA } im = evas_hash_find(images, buf); if (im) return im; + for (l = cache; l; l = l->next) + { + int ok; + + im = (RGBA_Image *)l; + ok = 0; + lo2 = &(im->load_opts); + if ((file) && (im->info.file) && + (!strcmp(file, im->info.file))) + ok++; + else if ((!file) && (!im->info.file)) + ok++; + if ((key) && (im->info.key) && + (!strcmp(key, im->info.key))) + ok++; + else if ((!key) && (!im->info.key)) + ok++; + if ((lo->scale_down_by == lo2->scale_down_by) && + (lo->dpi == lo2->dpi) && (lo->w == lo2->w) && + (lo->h == lo2->h)) + ok++; + if (ok >= 3) return im; + } /* for (l = cache; l; l = l->next) {