From b979dd67995a4e70952f883a2c68caa03d7e52ad Mon Sep 17 00:00:00 2001 From: Harry Jeffery Date: Sat, 28 Nov 2015 20:55:39 +0000 Subject: Improve cancellation responsiveness --- src/loader.c | 9 +++++++++ 1 file changed, 9 insertions(+) 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); -- cgit v1.2.3