kwo pushed a commit to branch master. http://git.enlightenment.org/legacy/imlib2.git/commit/?id=2339dcb1cfb80536e82d0f2eefa9288a08396a5f
commit 2339dcb1cfb80536e82d0f2eefa9288a08396a5f Author: Kim Woelders <k...@woelders.dk> Date: Sat Nov 16 20:01:57 2019 +0100 ICO loader: Fix non-immediate loading --- src/modules/loaders/loader_ico.c | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/src/modules/loaders/loader_ico.c b/src/modules/loaders/loader_ico.c index c228d39..061b384 100644 --- a/src/modules/loaders/loader_ico.c +++ b/src/modules/loaders/loader_ico.c @@ -274,7 +274,7 @@ ico_data_get_nibble(DATA8 * data, int w, int x, int y) } static int -ico_load(ico_t * ico, ImlibImage * im) +ico_load(ico_t * ico, ImlibImage * im, int load_data) { int ic, x, y, w, h, d; DATA32 *cmap; @@ -312,16 +312,22 @@ ico_load(ico_t * ico, ImlibImage * im) w = ie->w; h = ie->h; - if (w <= 0 || h <= 0) + if (!IMAGE_DIMENSIONS_OK(w, h)) return 0; + im->w = w; + im->h = h; + + SET_FLAG(im->flags, F_HAS_ALPHA); + + if (!load_data) + return 1; + if (!__imlib_AllocateData(im, w, h)) return 0; D("Loading icon %d: WxHxD=%dx%dx%d\n", ic, w, h, ie->bih.bpp); - SET_FLAG(im->flags, F_HAS_ALPHA); - cmap = ie->cmap; pxls = ie->pxls; mask = ie->mask; @@ -404,29 +410,23 @@ load(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity, char immediate_load) { ico_t *ico; + int ok, load_data; ico = ico_read(im->real_file); if (!ico) return 0; - if (im->loader || immediate_load || progress) + load_data = im->loader || immediate_load || progress; + ok = ico_load(ico, im, load_data); + if (ok) { - if (!ico_load(ico, im)) - goto error; - if (progress) progress(im, 100, 0, 0, im->w, im->h); } ico_delete(ico); - return 1; - - error: - ico_delete(ico); - __imlib_FreeData(im); - - return 0; + return ok; } void --