Load warning icon only once

This commit is contained in:
Bert 2011-02-09 17:05:09 +01:00
parent 8e5835d1fd
commit ea65610747

13
image.c
View File

@ -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);