nsxivea65610
Load warning icon only once
+8 −5
1 file changed
- M image.c +8 −5
| @@ -29,11 +29,15 @@ int zl_cnt; | |||
| 29 | 29 | float zoom_min; | |
| 30 | 30 | float zoom_max; | |
| 31 | 31 | ||
| 32 | + | Imlib_Image *im_warn; | |
| 33 | + | ||
| 32 | 34 | void img_init(img_t *img, win_t *win) { | |
| 33 | 35 | zl_cnt = sizeof(zoom_levels) / sizeof(zoom_levels[0]); | |
| 34 | 36 | zoom_min = zoom_levels[0] / 100.0; | |
| 35 | 37 | zoom_max = zoom_levels[zl_cnt - 1] / 100.0; | |
| 36 | 38 | ||
| 39 | + | im_warn = imlib_create_image_using_data(32, 32, icon_warn); | |
| 40 | + | ||
| 37 | 41 | if (img) { | |
| 38 | 42 | img->zoom = options->zoom; | |
| 39 | 43 | img->zoom = MAX(img->zoom, zoom_min); | |
| @@ -49,8 +53,10 @@ void img_init(img_t *img, win_t *win) { | |||
| 49 | 53 | } | |
| 50 | 54 | ||
| 51 | 55 | void img_free(img_t* img) { | |
| 52 | − | if (imlib_context_get_image()) | |
| 56 | + | if (img && img->valid && imlib_context_get_image()) | |
| 53 | 57 | imlib_free_image(); | |
| 58 | + | imlib_context_set_image(im_warn); | |
| 59 | + | imlib_free_image(); | |
| 54 | 60 | } | |
| 55 | 61 | ||
| 56 | 62 | int _imlib_load_image(const char *filename) { | |
| @@ -79,19 +85,16 @@ int img_check(const char *filename) { | |||
| 79 | 85 | } | |
| 80 | 86 | ||
| 81 | 87 | int img_load(img_t *img, const char *filename) { | |
| 82 | − | Imlib_Image *im_warn; | |
| 83 | − | ||
| 84 | 88 | if (!img || !filename) | |
| 85 | 89 | return 0; | |
| 86 | 90 | ||
| 87 | − | if (imlib_context_get_image()) | |
| 91 | + | if (img->valid && imlib_context_get_image()) | |
| 88 | 92 | imlib_free_image(); | |
| 89 | 93 | ||
| 90 | 94 | if ((img->valid = _imlib_load_image(filename))) { | |
| 91 | 95 | imlib_context_set_anti_alias(img->aa); | |
| 92 | 96 | img->scalemode = options->scalemode; | |
| 93 | 97 | } else { | |
| 94 | − | im_warn = imlib_create_image_using_data(32, 32, icon_warn); | |
| 95 | 98 | imlib_context_set_image(im_warn); | |
| 96 | 99 | imlib_image_set_has_alpha(1); | |
| 97 | 100 | imlib_context_set_anti_alias(0); | |