Pārlūkot izejas kodu

Load warning icon only once

master
Bert pirms 14 gadiem
vecāks
revīzija
ea65610747
1 mainītis faili ar 8 papildinājumiem un 5 dzēšanām
  1. +8
    -5
      image.c

+ 8
- 5
image.c Parādīt failu

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


Notiek ielāde…
Atcelt
Saglabāt