From ea65610747bf324c98f390fba91b8a7c8818006a Mon Sep 17 00:00:00 2001 From: Bert Date: Wed, 9 Feb 2011 17:05:09 +0100 Subject: Load warning icon only once --- image.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) (limited to 'image.c') diff --git a/image.c b/image.c index d68eb52..64225b1 100644 --- a/image.c +++ b/image.c @@ -29,11 +29,15 @@ int zl_cnt; float zoom_min; float zoom_max; +Imlib_Image *im_warn; + void img_init(img_t *img, win_t *win) { zl_cnt = sizeof(zoom_levels) / sizeof(zoom_levels[0]); zoom_min = zoom_levels[0] / 100.0; zoom_max = zoom_levels[zl_cnt - 1] / 100.0; + im_warn = imlib_create_image_using_data(32, 32, icon_warn); + if (img) { img->zoom = options->zoom; img->zoom = MAX(img->zoom, zoom_min); @@ -49,8 +53,10 @@ void img_init(img_t *img, win_t *win) { } void img_free(img_t* img) { - if (imlib_context_get_image()) + if (img && img->valid && imlib_context_get_image()) imlib_free_image(); + imlib_context_set_image(im_warn); + imlib_free_image(); } int _imlib_load_image(const char *filename) { @@ -79,19 +85,16 @@ int img_check(const char *filename) { } int img_load(img_t *img, const char *filename) { - Imlib_Image *im_warn; - if (!img || !filename) return 0; - if (imlib_context_get_image()) + if (img->valid && imlib_context_get_image()) imlib_free_image(); if ((img->valid = _imlib_load_image(filename))) { imlib_context_set_anti_alias(img->aa); img->scalemode = options->scalemode; } else { - im_warn = imlib_create_image_using_data(32, 32, icon_warn); imlib_context_set_image(im_warn); imlib_image_set_has_alpha(1); imlib_context_set_anti_alias(0); -- cgit v1.2.3-54-g00ecf