From aef36c6e5b580e70a8a85c343e4e766acb91d44a Mon Sep 17 00:00:00 2001 From: "Carsten Haitzler (Rasterman)" Date: Fri, 16 Apr 2021 03:54:53 +0100 Subject: [PATCH] edje_cc - dont try strip images that are unused at all my previous disable didnt disable all the unused image stripping. this now does. this code is buggy especially with image sets, to remove it and let the warnings to the job for those compiling themes. --- src/bin/edje/edje_cc_handlers.c | 1 + src/bin/edje/edje_cc_out.c | 30 ++++++++++++++++++++++-------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/src/bin/edje/edje_cc_handlers.c b/src/bin/edje/edje_cc_handlers.c index 0ced3e3308..4377204b69 100644 --- a/src/bin/edje/edje_cc_handlers.c +++ b/src/bin/edje/edje_cc_handlers.c @@ -2494,6 +2494,7 @@ st_images_set_image_image(void) set = edje_file->image_dir->sets + edje_file->image_dir->sets_count - 1; entry = eina_list_data_get(eina_list_last(set->entries)); + entry->id = 0; /* Add the image to the global pool with the same syntax. */ st_images_image(); diff --git a/src/bin/edje/edje_cc_out.c b/src/bin/edje/edje_cc_out.c index c2bfb82fd1..b7a1a1d729 100644 --- a/src/bin/edje/edje_cc_out.c +++ b/src/bin/edje/edje_cc_out.c @@ -1469,8 +1469,18 @@ data_image_sets_init(void) if (!set->entries) continue; EINA_LIST_FOREACH(set->entries, ll, set_entry) { - img = &edje_file->image_dir->entries[set_entry->id]; - set_entry->name = img->entry; + if (set_entry->id < (int)edje_file->image_dir->entries_count) + { + img = &edje_file->image_dir->entries[set_entry->id]; + set_entry->name = img->entry; + } + else + { + ERR("set %i / %i, entry %i / %i\n", + i, edje_file->image_dir->sets_count, + set_entry->id, edje_file->image_dir->entries_count); + abort(); + } } } } @@ -3606,6 +3616,7 @@ _data_image_sets_size_set(void) } } +/* static void _data_image_id_update(Eina_List *images_unused_list) { @@ -3676,6 +3687,7 @@ _data_image_id_update(Eina_List *images_unused_list) } } } + */ void data_process_lookups(void) @@ -3691,7 +3703,7 @@ data_process_lookups(void) Eina_Hash *images_in_use; char *group_name; Eina_Bool is_lua = EINA_FALSE; - Image_Unused_Ids *iui; +// Image_Unused_Ids *iui; /* remove all unreferenced Edje_Part_Collection */ EINA_LIST_FOREACH_SAFE(edje_collections, l, l2, pc) @@ -4013,10 +4025,10 @@ free_group: if (edje_file->image_dir && !is_lua) { - Edje_Image_Directory_Entry *de, *de_last, *img; + Edje_Image_Directory_Entry *de/*, *de_last, *img*/; Edje_Image_Directory_Set *set; Edje_Image_Directory_Set_Entry *set_e; - Eina_List *images_unused_list = NULL; +// Eina_List *images_unused_list = NULL; unsigned int i; for (i = 0; i < edje_file->image_dir->entries_count; ++i) @@ -4032,6 +4044,7 @@ free_group: // so as not to write the unused images, moved last image in the // list to unused image position and check it +/* free((void *)de->entry); de->entry = NULL; de_last = edje_file->image_dir->entries + edje_file->image_dir->entries_count - 1; @@ -4046,6 +4059,7 @@ free_group: img = realloc(edje_file->image_dir->entries, sizeof (Edje_Image_Directory_Entry) * edje_file->image_dir->entries_count); edje_file->image_dir->entries = img; + */ } for (i = 0; i < edje_file->image_dir->sets_count; ++i) @@ -4091,9 +4105,9 @@ free_group: } /* update image id in parts */ - if (images_unused_list) _data_image_id_update(images_unused_list); - EINA_LIST_FREE(images_unused_list, iui) - free(iui); +// if (images_unused_list) _data_image_id_update(images_unused_list); +// EINA_LIST_FREE(images_unused_list, iui) +// free(iui); _data_image_sets_size_set(); }