summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKim Woelders <kim@woelders.dk>2020-12-08 16:52:44 +0100
committerKim Woelders <kim@woelders.dk>2020-12-08 20:07:48 +0100
commitae3d501f93ef1e9fc71e5fd03bc299fcbdf7edff (patch)
treef00e29fb99701268584a67bdc3f9993c1d456ef3
parent64df90de3d356bdc7026ea6b48f1f629d8d87a98 (diff)
downloadimlib2-ae3d501f93ef1e9fc71e5fd03bc299fcbdf7edff.tar.gz
XPM loader: Get transparency right when doing header-only loading
We have to parse the colormap too to figure that out.
-rw-r--r--src/modules/loaders/loader_xpm.c29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/modules/loaders/loader_xpm.c b/src/modules/loaders/loader_xpm.c
index 86ccad7..727addb 100644
--- a/src/modules/loaders/loader_xpm.c
+++ b/src/modules/loaders/loader_xpm.c
@@ -234,15 +234,6 @@ load2(ImlibImage * im, int load_data)
if (!cmap)
goto quit;
- if (!load_data)
- {
- rc = LOAD_SUCCESS;
- goto quit;
- }
-
- ptr = __imlib_AllocateData(im);
- if (!ptr)
- goto quit;
pixels = w * h;
j = 0;
@@ -344,6 +335,21 @@ load2(ImlibImage * im, int load_data)
else
qsort(cmap, ncolors, sizeof(cmap_t), xpm_cmap_sort);
context++;
+
+ if (transp >= 0)
+ SET_FLAG(im->flags, F_HAS_ALPHA);
+ else
+ UNSET_FLAG(im->flags, F_HAS_ALPHA);
+
+ if (!load_data)
+ {
+ rc = LOAD_SUCCESS;
+ goto quit;
+ }
+
+ ptr = __imlib_AllocateData(im);
+ if (!ptr)
+ goto quit;
}
}
else
@@ -439,11 +445,6 @@ load2(ImlibImage * im, int load_data)
im->data[count] = cmap[0].pixel;
}
- if (transp >= 0)
- SET_FLAG(im->flags, F_HAS_ALPHA);
- else
- UNSET_FLAG(im->flags, F_HAS_ALPHA);
-
rc = LOAD_SUCCESS;
quit: