diff options
author | Kim Woelders <kim@woelders.dk> | 2020-12-08 16:52:44 +0100 |
---|---|---|
committer | Kim Woelders <kim@woelders.dk> | 2020-12-08 20:07:48 +0100 |
commit | ae3d501f93ef1e9fc71e5fd03bc299fcbdf7edff (patch) | |
tree | f00e29fb99701268584a67bdc3f9993c1d456ef3 | |
parent | 64df90de3d356bdc7026ea6b48f1f629d8d87a98 (diff) | |
download | imlib2-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.c | 29 |
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: |