diff options
| author | Daniel Friesel <derf@finalrewind.org> | 2018-07-20 05:44:57 +0200 | 
|---|---|---|
| committer | Daniel Friesel <derf@finalrewind.org> | 2018-07-20 05:44:57 +0200 | 
| commit | 9f65dacdcf4e01ddf7becea9fc57072bdbd5c175 (patch) | |
| tree | d5bbd6b59410e52174fa8269e53d7f0e8fdca362 | |
| parent | 9372e9302a429478d95ddd4036ffe55059c4f032 (diff) | |
Blame Imlib2 when failing to create > 32000x32000 px image
| -rw-r--r-- | src/index.c | 13 | ||||
| -rw-r--r-- | src/thumbnail.c | 13 | 
2 files changed, 20 insertions, 6 deletions
| diff --git a/src/index.c b/src/index.c index ca1664b..af3adea 100644 --- a/src/index.c +++ b/src/index.c @@ -147,9 +147,16 @@ void init_index_mode(void)  	index_image_height = h + title_area_h;  	im_main = imlib_create_image(index_image_width, index_image_height); -	if (!im_main) -		eprintf("Failed to create %dx%d pixels (%d MB) index image. Do you have enough RAM?", -				index_image_width, index_image_height, index_image_width * index_image_height * 4 / (1024*1024)); +	if (!im_main) { +		if (index_image_height >= 32768 || index_image_width >= 32768) { +			eprintf("Failed to create %dx%d pixels (%d MB) index image.\n" +					"This is probably due to Imlib2 issues when dealing with images larger than 32k x 32k pixels.", +					index_image_width, index_image_height, index_image_width * index_image_height * 4 / (1024*1024)); +		} else { +			eprintf("Failed to create %dx%d pixels (%d MB) index image. Do you have enough RAM?", +					index_image_width, index_image_height, index_image_width * index_image_height * 4 / (1024*1024)); +		} +	}  	if (bg_im)  		gib_imlib_blend_image_onto_image(im_main, bg_im, diff --git a/src/thumbnail.c b/src/thumbnail.c index cf38cfc..45fbabe 100644 --- a/src/thumbnail.c +++ b/src/thumbnail.c @@ -149,9 +149,16 @@ void init_thumbnail_mode(void)  	D(("imlib_create_image(%d, %d)\n", index_image_width, index_image_height));  	td.im_main = imlib_create_image(index_image_width, index_image_height); -	if (!td.im_main) -		eprintf("Failed to create %dx%d pixels (%d MB) index image. Do you have enough RAM?", -				index_image_width, index_image_height, index_image_width * index_image_height * 4 / (1024*1024)); +	if (!td.im_main) { +		if (index_image_height >= 32768 || index_image_width >= 32768) { +			eprintf("Failed to create %dx%d pixels (%d MB) index image.\n" +					"This is probably due to Imlib2 issues when dealing with images larger than 32k x 32k pixels.", +					index_image_width, index_image_height, index_image_width * index_image_height * 4 / (1024*1024)); +		} else { +			eprintf("Failed to create %dx%d pixels (%d MB) index image. Do you have enough RAM?", +					index_image_width, index_image_height, index_image_width * index_image_height * 4 / (1024*1024)); +		} +	}  	gib_imlib_image_set_has_alpha(td.im_main, 1); | 
