diff options
author | Harry Jeffery <harry@exec64.co.uk> | 2015-11-28 20:55:39 +0000 |
---|---|---|
committer | Harry Jeffery <harry@exec64.co.uk> | 2015-11-28 20:55:39 +0000 |
commit | b979dd67995a4e70952f883a2c68caa03d7e52ad (patch) | |
tree | 1fc8b19224b11e81f2f36bbd40c589112c9fb546 | |
parent | d5c493878d955cf407296ebad4ff8cce3646ac51 (diff) | |
download | imv-b979dd67995a4e70952f883a2c68caa03d7e52ad.tar.gz |
Improve cancellation responsiveness
-rw-r--r-- | src/loader.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/loader.c b/src/loader.c index 95e0831..97ba8e4 100644 --- a/src/loader.c +++ b/src/loader.c @@ -200,12 +200,21 @@ static void *imv_loader_bg_new_img(void *data) FreeImage_UnlockPage(mbmp, frame, 0); } else { + /* Future TODO: If we load image line-by-line we could stop loading large + * ones before wasting much more time/memory on them. */ FIBITMAP *image = FreeImage_Load(fmt, path, 0); free(path); if(!image) { imv_loader_error_occurred(ldr); return 0; } + + /* Check for cancellation before we convert pixel format */ + if(is_thread_cancelled()) { + FreeImage_Unload(image); + return 0; + } + width = FreeImage_GetWidth(bmp); height = FreeImage_GetHeight(bmp); bmp = FreeImage_ConvertTo32Bits(image); |