aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarry Jeffery <harry@exec64.co.uk>2015-11-28 20:55:39 +0000
committerHarry Jeffery <harry@exec64.co.uk>2015-11-28 20:55:39 +0000
commitb979dd67995a4e70952f883a2c68caa03d7e52ad (patch)
tree1fc8b19224b11e81f2f36bbd40c589112c9fb546
parentd5c493878d955cf407296ebad4ff8cce3646ac51 (diff)
downloadimv-b979dd67995a4e70952f883a2c68caa03d7e52ad.tar.gz
Improve cancellation responsiveness
-rw-r--r--src/loader.c9
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);