kwo pushed a commit to branch master. http://git.enlightenment.org/legacy/imlib2.git/commit/?id=0f5b4fb10aa22298a439bd73c29f6a17bb29a279
commit 0f5b4fb10aa22298a439bd73c29f6a17bb29a279 Author: Kim Woelders <[email protected]> Date: Sat Nov 30 16:22:55 2019 +0100 Loaders: Simplify/fix progress handling Progress handling was broken in at least bmp, gif, lbm, and png loaders. --- src/modules/loaders/loader_argb.c | 21 +--- src/modules/loaders/loader_bmp.c | 203 +++++++++----------------------------- src/modules/loaders/loader_ff.c | 9 +- src/modules/loaders/loader_gif.c | 20 +--- src/modules/loaders/loader_ico.c | 4 +- src/modules/loaders/loader_jpeg.c | 23 +---- src/modules/loaders/loader_lbm.c | 26 +---- src/modules/loaders/loader_png.c | 31 ++---- src/modules/loaders/loader_pnm.c | 53 +++++----- src/modules/loaders/loader_tga.c | 4 +- src/modules/loaders/loader_tiff.c | 39 ++------ src/modules/loaders/loader_webp.c | 4 +- src/modules/loaders/loader_xpm.c | 19 ++-- 13 files changed, 119 insertions(+), 337 deletions(-) diff --git a/src/modules/loaders/loader_argb.c b/src/modules/loaders/loader_argb.c index 63fe81d..ec55abb 100644 --- a/src/modules/loaders/loader_argb.c +++ b/src/modules/loaders/loader_argb.c @@ -8,8 +8,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, FILE *f; int w = 0, h = 0, alpha = 0; DATA32 *ptr; - int y, l; - int pper = 0, pl = 0; + int y; f = fopen(im->real_file, "rb"); if (!f) @@ -64,22 +63,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, #endif ptr += im->w; - if (progress) + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) { - char per; - - per = (char)((100 * y) / im->h); - if (((per - pper) >= progress_granularity) || (y == (im->h - 1))) - { - l = y - pl; - if (!progress(im, per, 0, (y - l), im->w, l)) - { - rc = LOAD_BREAK; - goto quit; - } - pper = per; - pl = y; - } + rc = LOAD_BREAK; + goto quit; } } diff --git a/src/modules/loaders/loader_bmp.c b/src/modules/loaders/loader_bmp.c index 4385e97..5e2320f 100644 --- a/src/modules/loaders/loader_bmp.c +++ b/src/modules/loaders/loader_bmp.c @@ -139,8 +139,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, { int rc; FILE *f; - char pper = 0; - int pl = 0; unsigned int offset; unsigned int size, comp, imgsize; unsigned int bitcount, ncols, skip; @@ -442,26 +440,11 @@ load(ImlibImage * im, ImlibProgressFunction progress, } buffer_ptr += skip; ptr -= w * 2; - if (progress) - { - char per; - int ll; - per = (char)((100 * y) / im->h); - if (((per - pper) >= progress_granularity) || - (y == (im->h - 1))) - { - ll = y - pl; - if (!progress - (im, per, 0, im->h - y - 1, im->w, - im->h - y + ll)) - { - rc = LOAD_BREAK; - goto quit; - } - pper = per; - pl = y; - } + if (im->lc && __imlib_LoadProgressRows(im, h - y - 1, -1)) + { + rc = LOAD_BREAK; + goto quit; } } break; @@ -517,7 +500,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr = im->data + (h - y - 1) * w; break; case RLE_END: - goto bail_bc4; + x = 0; + y = h; + buffer_ptr = buffer_end_safe; + break; case RLE_MOVE: /* Need to read two bytes */ if (buffer_ptr >= buffer_end_safe) @@ -556,27 +542,17 @@ load(ImlibImage * im, ImlibProgressFunction progress, break; } } + goto progress_bc4; + bail_bc4: - if (progress) - { - char per; - int ll; + buffer_ptr = buffer_end_safe; - per = (char)((100 * y) / im->h); - if (((per - pper) >= progress_granularity) || - (y == (im->h - 1))) - { - ll = y - pl; - if (!progress - (im, per, 0, im->h - y - 1, im->w, - im->h - y + ll)) - { - rc = LOAD_BREAK; - goto quit; - } - pper = per; - pl = y; - } + progress_bc4: + if (im->lc && (x == w) && + __imlib_LoadProgressRows(im, h - y - 1, -1)) + { + rc = LOAD_BREAK; + goto quit; } } break; @@ -595,26 +571,11 @@ load(ImlibImage * im, ImlibProgressFunction progress, } buffer_ptr += skip; ptr -= w * 2; - if (progress) - { - char per; - int ll; - per = (char)((100 * y) / im->h); - if (((per - pper) >= progress_granularity) || - (y == (im->h - 1))) - { - ll = y - pl; - if (!progress - (im, per, 0, im->h - y - 1, im->w, - im->h - y + ll)) - { - rc = LOAD_BREAK; - goto quit; - } - pper = per; - pl = y; - } + if (im->lc && __imlib_LoadProgressRows(im, h - y - 1, -1)) + { + rc = LOAD_BREAK; + goto quit; } } break; @@ -659,7 +620,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr = im->data + ((h - y - 1) * w) + x; break; case RLE_END: - goto bail_bc8; + x = 0; + y = h; + buffer_ptr = buffer_end_safe; + break; case RLE_MOVE: /* Need to read two bytes */ if (buffer_ptr >= buffer_end_safe) @@ -693,29 +657,17 @@ load(ImlibImage * im, ImlibProgressFunction progress, break; } } - } - bail_bc8: - if (progress) - { - char per; - int ll; - - per = (char)((100 * y) / im->h); -#if 0 - /* Always call progress() at least once */ - if (((per - pper) >= progress_granularity) || - (y == (im->h - 1))) -#endif + goto progress_bc8; + + bail_bc8: + buffer_ptr = buffer_end_safe; + + progress_bc8: + if (im->lc && (x == w) && + __imlib_LoadProgressRows(im, h - y - 1, -1)) { - ll = y - pl; - if (!progress - (im, per, 0, im->h - y - 1, im->w, im->h - y + ll)) - { - rc = LOAD_BREAK; - goto quit; - } - pper = per; - pl = y; + rc = LOAD_BREAK; + goto quit; } } break; @@ -732,26 +684,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr -= w * 2; buffer_ptr += skip; - if (progress) + if (im->lc && __imlib_LoadProgressRows(im, h - y - 1, -1)) { - char per; - int ll; - - per = (char)((100 * y) / im->h); - if (((per - pper) >= progress_granularity) || - (y == (im->h - 1))) - { - ll = y - pl; - if (!progress - (im, per, 0, im->h - y - 1, im->w, - im->h - y + ll)) - { - rc = LOAD_BREAK; - goto quit; - } - pper = per; - pl = y; - } + rc = LOAD_BREAK; + goto quit; } } break; @@ -781,25 +717,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr -= w * 2; buffer_ptr += skip; - if (progress) + if (im->lc && __imlib_LoadProgressRows(im, h - y - 1, -1)) { - char per; - int ll; - - per = (char)((100 * y) / im->h); - if (((per - pper) >= progress_granularity) || - (y == (im->h - 1))) - { - ll = y - pl; - if (!progress - (im, per, 0, im->h - y - 1, im->w, im->h - y + ll)) - { - rc = LOAD_BREAK; - goto quit; - } - pper = per; - pl = y; - } + rc = LOAD_BREAK; + goto quit; } } break; @@ -820,25 +741,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr -= w * 2; buffer_ptr += skip; - if (progress) + if (im->lc && __imlib_LoadProgressRows(im, h - y - 1, -1)) { - char per; - int ll; - - per = (char)((100 * y) / im->h); - if (((per - pper) >= progress_granularity) || - (y == (im->h - 1))) - { - ll = y - pl; - if (!progress - (im, per, 0, im->h - y - 1, im->w, im->h - y + ll)) - { - rc = LOAD_BREAK; - goto quit; - } - pper = per; - pl = y; - } + rc = LOAD_BREAK; + goto quit; } } break; @@ -866,25 +772,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr -= w * 2; buffer_ptr += skip; - if (progress) + if (im->lc && __imlib_LoadProgressRows(im, h - y - 1, -1)) { - char per; - int ll; - - per = (char)((100 * y) / im->h); - if (((per - pper) >= progress_granularity) || - (y == (im->h - 1))) - { - ll = y - pl; - if (!progress - (im, per, 0, im->h - y - 1, im->w, im->h - y + ll)) - { - rc = LOAD_BREAK; - goto quit; - } - pper = per; - pl = y; - } + rc = LOAD_BREAK; + goto quit; } } break; diff --git a/src/modules/loaders/loader_ff.c b/src/modules/loaders/loader_ff.c index f6942d2..0950f97 100644 --- a/src/modules/loaders/loader_ff.c +++ b/src/modules/loaders/loader_ff.c @@ -72,10 +72,13 @@ load(ImlibImage * im, ImlibProgressFunction progress, dat[j + 0] = ntohs(row[j + 2]) / 257; dat[j + 3] = ntohs(row[j + 3]) / 257; } - } - if (progress) - progress(im, 100, 0, 0, im->w, im->h); + if (im->lc && __imlib_LoadProgressRows(im, i, 1)) + { + rc = LOAD_BREAK; + goto quit; + } + } rc = LOAD_SUCCESS; diff --git a/src/modules/loaders/loader_gif.c b/src/modules/loaders/loader_gif.c index fece782..53fc8b9 100644 --- a/src/modules/loaders/loader_gif.c +++ b/src/modules/loaders/loader_gif.c @@ -17,8 +17,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, GifRecordType rec; ColorMapObject *cmap; int i, j, done, bg, r, g, b, w = 0, h = 0; - float per = 0.0, per_inc; - int last_per = 0, last_y = 0; int transp; int fd; DATA32 colormap[256]; @@ -150,30 +148,20 @@ load(ImlibImage * im, ImlibProgressFunction progress, if (!ptr) goto quit; - per_inc = 100.0 / (float)h; for (i = 0; i < h; i++) { for (j = 0; j < w; j++) { *ptr++ = colormap[rows[i][j]]; } - per += per_inc; - if (progress && (((int)per) != last_per) - && (((int)per) % progress_granularity == 0)) + + if (im->lc && __imlib_LoadProgressRows(im, i, 1)) { - last_per = (int)per; - if (!(progress(im, per, 0, last_y, w, i))) - { - rc = LOAD_BREAK; - goto quit; - } - last_y = i; + rc = LOAD_BREAK; + goto quit; } } - if (progress) - progress(im, 100, 0, last_y, im->w, im->h); - rc = LOAD_SUCCESS; quit: diff --git a/src/modules/loaders/loader_ico.c b/src/modules/loaders/loader_ico.c index f2215e4..5aff0a5 100644 --- a/src/modules/loaders/loader_ico.c +++ b/src/modules/loaders/loader_ico.c @@ -419,8 +419,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, ok = ico_load(ico, im, load_data); if (ok) { - if (progress) - progress(im, 100, 0, 0, im->w, im->h); + if (im->lc) + __imlib_LoadProgressRows(im, 0, im->h); } ico_delete(ico); diff --git a/src/modules/loaders/loader_jpeg.c b/src/modules/loaders/loader_jpeg.c index 2c0999a..036a007 100644 --- a/src/modules/loaders/loader_jpeg.c +++ b/src/modules/loaders/loader_jpeg.c @@ -67,7 +67,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, FILE *f; DATA8 *ptr, *line[16]; DATA32 *ptr2; - int x, y, l, i, scans, count, prevy; + int x, y, l, i, scans; f = fopen(im->real_file, "rb"); if (!f) @@ -115,9 +115,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, if (!ptr2) goto quit; - count = 0; - prevy = 0; - for (i = 0; i < cinfo.rec_outbuf_height; i++) line[i] = jdata.data + (i * w * cinfo.output_components); @@ -165,22 +162,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, } } - if (progress) + if (im->lc && __imlib_LoadProgressRows(im, l, scans)) { - int per; - - per = (l * 100) / h; - if (((per - count) >= progress_granularity) - || ((h - l) <= cinfo.rec_outbuf_height)) - { - count = per; - if (!progress(im, per, 0, prevy, w, scans + l - prevy)) - { - rc = LOAD_BREAK; - goto done; - } - prevy = l + scans; - } + rc = LOAD_BREAK; + goto done; } } diff --git a/src/modules/loaders/loader_lbm.c b/src/modules/loaders/loader_lbm.c index 10b4808..419c724 100644 --- a/src/modules/loaders/loader_lbm.c +++ b/src/modules/loaders/loader_lbm.c @@ -453,7 +453,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, { int rc; char *env; - int i, n, y, z, gran, nexty, prevy; + int i, n, y, z; unsigned char *plane[40]; ILBM ilbm; @@ -534,8 +534,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, * from each plane are interleaved, from top to bottom. The first plane is the * 0 bit. *----------*/ - plane[0] = NULL; - gran = nexty = 0; __imlib_AllocateData(im); if (!im->data) @@ -553,15 +551,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, z = ((im->w + 15) / 16) * 2 * n; - if (progress) - { - prevy = 0; - if (progress_granularity <= 0) - progress_granularity = 1; - gran = progress_granularity; - nexty = ((im->h * gran) / 100); - } - scalecmap(&ilbm); for (y = 0; y < im->h; y++) @@ -571,17 +560,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, deplane(im->data + im->w * y, im->w, &ilbm, plane); ilbm.row++; - if (progress && (y >= nexty || y == im->h - 1)) + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) { - if (!progress - (im, (char)((100 * (y + 1)) / im->h), 0, prevy, im->w, y + 1)) - { - rc = LOAD_BREAK; - goto quit; - } - prevy = y; - gran += progress_granularity; - nexty = ((im->h * gran) / 100); + rc = LOAD_BREAK; + goto quit; } } diff --git a/src/modules/loaders/loader_png.c b/src/modules/loaders/loader_png.c index ff771d8..9b36fb5 100644 --- a/src/modules/loaders/loader_png.c +++ b/src/modules/loaders/loader_png.c @@ -134,38 +134,25 @@ load(ImlibImage * im, ImlibProgressFunction progress, for (i = 0; i < h; i++) lines[i] = ((unsigned char *)(im->data)) + (i * w * sizeof(DATA32)); - if (progress) + if (im->lc) { - int y, count, prevy, pass, number_passes, per, - nrows = 1; + int y, pass, n_passes, nrows = 1; - count = 0; - number_passes = png_set_interlace_handling(png_ptr); - for (pass = 0; pass < number_passes; pass++) + n_passes = png_set_interlace_handling(png_ptr); + for (pass = 0; pass < n_passes; pass++) { - prevy = 0; - per = 0; + __imlib_LoadProgressSetPass(im, pass, n_passes); + for (y = 0; y < h; y += nrows) { png_read_rows(png_ptr, &lines[y], NULL, nrows); - per = (((pass * h) + y) * 100) / (h * number_passes); - if ((per - count) >= progress_granularity) + if (__imlib_LoadProgressRows(im, y, nrows)) { - count = per; - if (!progress(im, per, 0, prevy, w, y - prevy + 1)) - { - rc = LOAD_BREAK; - goto quit1; - } - prevy = y + 1; + rc = LOAD_BREAK; + goto quit1; } } - if (!progress(im, per, 0, prevy, w, y - prevy + 1)) - { - rc = LOAD_BREAK; - goto quit1; - } } } else diff --git a/src/modules/loaders/loader_pnm.c b/src/modules/loaders/loader_pnm.c index 8f23acd..3d43520 100644 --- a/src/modules/loaders/loader_pnm.c +++ b/src/modules/loaders/loader_pnm.c @@ -6,21 +6,14 @@ do_progress(ImlibImage * im, ImlibProgressFunction progress, char progress_granularity, char *pper, int *py, int y) { int rc = 0; - int h = 0; - char per; + int per; - per = (char)((100 * y) / im->h); - if (((per - *pper) >= progress_granularity) || (y == (im->h - 1))) + per = (100 * (y + 1)) / im->h; + if (per == 100 || per >= *pper + progress_granularity) { - h = y - *py; - - /* fix off by one in case of the last line */ - if (y == (im->h - 1)) - h++; - - rc = !progress(im, per, 0, *py, im->w, h); - *pper = per; - *py = y; + rc = !progress(im, per, 0, *py, im->w, y + 1 - *py); + *py = y + 1; + *pper += progress_granularity; } return rc; @@ -39,8 +32,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, DATA8 *ptr = NULL; int *idata = NULL; /* for the ASCII versions */ DATA32 *ptr2, rval, gval, bval; - int i, j, x, y, pl = 0; - char pper = 0; + int i, j, x, y; f = fopen(im->real_file, "rb"); if (!f) @@ -156,8 +148,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, else goto quit; } - if (progress && - do_progress(im, progress, progress_granularity, &pper, &pl, y)) + + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) goto quit_progress; } break; @@ -182,8 +174,7 @@ load(ImlibImage * im, ImlibProgressFunction progress, } } - if (progress && - do_progress(im, progress, progress_granularity, &pper, &pl, y)) + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) goto quit_progress; } break; @@ -208,8 +199,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, (((gval * 255) / v) << 8) | ((bval * 255) / v); } } - if (progress && - do_progress(im, progress, progress_granularity, &pper, &pl, y)) + + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) goto quit_progress; } break; @@ -238,8 +229,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, } ptr++; } - if (progress && - do_progress(im, progress, progress_granularity, &pper, &pl, y)) + + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) goto quit_progress; } break; @@ -277,8 +268,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr++; } } - if (progress && - do_progress(im, progress, progress_granularity, &pper, &pl, y)) + + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) goto quit_progress; } break; @@ -316,8 +307,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr += 3; } } - if (progress && - do_progress(im, progress, progress_granularity, &pper, &pl, y)) + + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) goto quit_progress; } break; @@ -348,8 +339,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr2++; ptr++; } - if (progress && - do_progress(im, progress, progress_granularity, &pper, &pl, y)) + + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) goto quit_progress; } break; @@ -386,8 +377,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, ptr += 4; } } - if (progress && - do_progress(im, progress, progress_granularity, &pper, &pl, y)) + + if (im->lc && __imlib_LoadProgressRows(im, y, 1)) goto quit_progress; } break; diff --git a/src/modules/loaders/loader_tga.c b/src/modules/loaders/loader_tga.c index 523a5c6..ac1670e 100644 --- a/src/modules/loaders/loader_tga.c +++ b/src/modules/loaders/loader_tga.c @@ -570,8 +570,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, tgaflip(im->data, im->w, im->h, fliph, flipv); } - if (progress) - progress(im, 100, 0, 0, im->w, im->h); + if (im->lc) + __imlib_LoadProgressRows(im, 0, im->h); rc = LOAD_SUCCESS; diff --git a/src/modules/loaders/loader_tiff.c b/src/modules/loaders/loader_tiff.c index 14f22e0..eb1c22c 100644 --- a/src/modules/loaders/loader_tiff.c +++ b/src/modules/loaders/loader_tiff.c @@ -14,11 +14,6 @@ struct TIFFRGBAImage_Extra { tileContigRoutine put_contig; tileSeparateRoutine put_separate; ImlibImage *image; - ImlibProgressFunction progress; - char pper; - char progress_granularity; - uint32 num_pixels; - uint32 py; }; typedef struct TIFFRGBAImage_Extra TIFFRGBAImage_Extra; @@ -190,9 +185,10 @@ raster(TIFFRGBAImage_Extra * img, uint32 * rast, break; } - if (img->progress) + if (img->image->lc) { - char per; + /* for tile based images, we just progress each tile because */ + /* of laziness. Couldn't think of a good way to do this */ switch (img->rgba.orientation) { @@ -200,18 +196,7 @@ raster(TIFFRGBAImage_Extra * img, uint32 * rast, case ORIENTATION_TOPLEFT: if (w >= image_width) { - uint32 real_y = (image_height - 1) - y; - - per = (char)(((real_y + h - 1) * 100) / image_height); - - if (((per - img->pper) >= img->progress_granularity) || - (real_y + h) >= image_height) - { - img->progress(img->image, per, 0, img->py, w, - (real_y + h) - img->py); - img->py = real_y + h; - img->pper = per; - } + __imlib_LoadProgressRows(img->image, image_height - y - 1, h); } else { @@ -231,9 +216,7 @@ raster(TIFFRGBAImage_Extra * img, uint32 * rast, y = image_height - y - h; goto progress_a; progress_a: - per = (char)((w * h * 100) / img->num_pixels); - img->pper += per; - img->progress(img->image, img->pper, x, y, w, h); + __imlib_LoadProgress(img->image, x, y, w, h); break; case ORIENTATION_LEFTTOP: @@ -248,9 +231,7 @@ raster(TIFFRGBAImage_Extra * img, uint32 * rast, case ORIENTATION_LEFTBOT: goto progress_b; progress_b: - per = (char)((w * h * 100) / img->num_pixels); - img->pper += per; - img->progress(img->image, img->pper, y, x, h, w); + __imlib_LoadProgress(img->image, y, x, h, w); break; } } @@ -267,7 +248,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, uint16 magic_number; TIFFRGBAImage_Extra rgba_image; uint32 *rast = NULL; - uint32 num_pixels; char txt[1024]; f = fopen(im->real_file, "rb"); @@ -334,7 +314,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, if (!IMAGE_DIMENSIONS_OK(im->w, im->h)) goto quit; - rgba_image.num_pixels = num_pixels = im->w * im->h; if (rgba_image.rgba.alpha != EXTRASAMPLE_UNSPECIFIED) SET_FLAG(im->flags, F_HAS_ALPHA); else @@ -348,14 +327,10 @@ load(ImlibImage * im, ImlibProgressFunction progress, /* Load data */ - rgba_image.progress = progress; - rgba_image.pper = rgba_image.py = 0; - rgba_image.progress_granularity = progress_granularity; - if (!__imlib_AllocateData(im)) goto quit; - rast = (uint32 *) _TIFFmalloc(sizeof(uint32) * num_pixels); + rast = (uint32 *) _TIFFmalloc(sizeof(uint32) * im->w * im->h); if (!rast) { fprintf(stderr, "imlib2-tiffloader: Out of memory\n"); diff --git a/src/modules/loaders/loader_webp.c b/src/modules/loaders/loader_webp.c index 42b4285..6482fa8 100644 --- a/src/modules/loaders/loader_webp.c +++ b/src/modules/loaders/loader_webp.c @@ -95,8 +95,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, sizeof(DATA32) * im->w * im->h, im->w * 4) == NULL) goto quit; - if (progress) - progress(im, 100, 0, 0, im->w, im->h); + if (im->lc) + __imlib_LoadProgressRows(im, 0, im->h); rc = LOAD_SUCCESS; diff --git a/src/modules/loaders/loader_xpm.c b/src/modules/loaders/loader_xpm.c index a3bbc3f..7bc3fa9 100644 --- a/src/modules/loaders/loader_xpm.c +++ b/src/modules/loaders/loader_xpm.c @@ -140,9 +140,8 @@ load(ImlibImage * im, ImlibProgressFunction progress, int lsz = 256; cmap_t *cmap; short lookup[128 - 32][128 - 32]; - float per = 0.0, per_inc = 0.0; - int last_per = 0, last_y = 0; int count, pixels; + int last_row = 0; f = fopen(im->real_file, "rb"); if (!f) @@ -241,8 +240,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, if (!cmap) goto quit; - per_inc = 100.0 / (((float)w) * h); - if (!load_data) { rc = LOAD_SUCCESS; @@ -387,17 +384,16 @@ load(ImlibImage * im, ImlibProgressFunction progress, count++; } } - per += per_inc; - if (progress && (((int)per) != last_per) - && (((int)per) % progress_granularity == 0)) + + i = count / w; + if (im->lc && i > last_row) { - last_per = (int)per; - if (!(progress(im, (int)per, 0, last_y, w, i))) + if (__imlib_LoadProgressRows(im, last_row, i - last_row)) { rc = LOAD_BREAK; goto quit; } - last_y = i; + last_row = i; } } } @@ -454,9 +450,6 @@ load(ImlibImage * im, ImlibProgressFunction progress, else UNSET_FLAG(im->flags, F_HAS_ALPHA); - if (progress) - progress(im, 100, 0, last_y, w, h); - rc = LOAD_SUCCESS; quit: --
