kwo pushed a commit to branch master.

http://git.enlightenment.org/legacy/imlib2.git/commit/?id=ae3d501f93ef1e9fc71e5fd03bc299fcbdf7edff

commit ae3d501f93ef1e9fc71e5fd03bc299fcbdf7edff
Author: Kim Woelders <k...@woelders.dk>
Date:   Tue Dec 8 16:52:44 2020 +0100

    XPM loader: Get transparency right when doing header-only loading
    
    We have to parse the colormap too to figure that out.
---
 src/modules/loaders/loader_xpm.c | 29 +++++++++++++++--------------
 1 file 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:

-- 


Reply via email to