forked from enlightenment/efl
edje: edje_cc will now only store and encore needed image.
SVN revision: 67524
This commit is contained in:
parent
14a94f1a8f
commit
7191b9a3f6
|
@ -303,3 +303,7 @@
|
|||
2012-01-24 Cedric Bail
|
||||
|
||||
* Filter should only be valid once all program affecting there part are done.
|
||||
|
||||
2012-01-25 Cedric Bail
|
||||
|
||||
* Only store the image used by active group.
|
||||
|
|
|
@ -16,6 +16,7 @@ Improvements:
|
|||
* reduce number of call to stat during edje_object_file_set.
|
||||
* unswallow object about to be swallowed if necessary.
|
||||
* Lua scripts now more resilient against API changes.
|
||||
* edje_cc only store the image activelly used in an edje file.
|
||||
|
||||
Changes since Edje 1.0.0:
|
||||
-------------------------
|
||||
|
|
|
@ -147,6 +147,7 @@ void data_queue_anonymous_lookup(Edje_Part_Collection *pc, Edje_Program *ep,
|
|||
void data_queue_copied_anonymous_lookup(Edje_Part_Collection *pc, int *src, int *dest);
|
||||
void data_queue_image_lookup(char *name, int *dest, Eina_Bool *set);
|
||||
void data_queue_copied_image_lookup(int *src, int *dest, Eina_Bool *set);
|
||||
void data_queue_image_remove(int *dest, Eina_Bool *set);
|
||||
void data_queue_part_slave_lookup(int *master, int *slave);
|
||||
void data_queue_image_slave_lookup(int *master, int *slave);
|
||||
void data_queue_spectrum_lookup(char *name, int *dest);
|
||||
|
|
|
@ -2156,7 +2156,7 @@ st_collections_group_name(void)
|
|||
Edje_Part_Collection *pc;
|
||||
Eina_List *l;
|
||||
Code *cd;
|
||||
int i = 0;
|
||||
unsigned int i = 0;
|
||||
|
||||
pc = eina_list_nth(edje_collections, older->id);
|
||||
cd = eina_list_nth(codes, older->id);
|
||||
|
@ -2173,6 +2173,23 @@ st_collections_group_name(void)
|
|||
if (older) older->id = pc->id;
|
||||
else if (pc->part == current_pc->part) current_de->id = pc->id;
|
||||
}
|
||||
|
||||
for (i = 0; i < pc->parts_count; ++i)
|
||||
{
|
||||
Edje_Part_Description_Image *ed;
|
||||
unsigned int j;
|
||||
|
||||
if (pc->parts[i]->type != EDJE_PART_TYPE_IMAGE)
|
||||
continue ;
|
||||
|
||||
ed = (Edje_Part_Description_Image*) &pc->parts[i];
|
||||
|
||||
data_queue_image_remove(&(ed->image.id), &(ed->image.set));
|
||||
|
||||
for (j = 0; j < ed->image.tweens_count; ++j)
|
||||
data_queue_image_remove(&(ed->image.tweens[ed->image.tweens_count - 1]->id),
|
||||
&(ed->image.tweens[ed->image.tweens_count - 1]->set));
|
||||
}
|
||||
}
|
||||
|
||||
eina_hash_direct_add(edje_file->collection, current_de->entry, current_de);
|
||||
|
|
|
@ -500,7 +500,8 @@ data_write_images(Eet_File *ef, int *image_num, int *input_bytes, int *input_raw
|
|||
{
|
||||
img = &edje_file->image_dir->entries[i];
|
||||
|
||||
if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_EXTERNAL)
|
||||
if (img->source_type == EDJE_IMAGE_SOURCE_TYPE_EXTERNAL
|
||||
|| img->entry == NULL)
|
||||
{
|
||||
}
|
||||
else
|
||||
|
@ -1549,6 +1550,22 @@ data_queue_image_lookup(char *name, int *dest, Eina_Bool *set)
|
|||
il->set = set;
|
||||
}
|
||||
|
||||
void
|
||||
data_queue_image_remove(int *dest, Eina_Bool *set)
|
||||
{
|
||||
Eina_List *l;
|
||||
Image_Lookup *il;
|
||||
|
||||
EINA_LIST_FOREACH(image_lookups, l, il)
|
||||
{
|
||||
if (il->dest == dest && il->set == set)
|
||||
{
|
||||
image_lookups = eina_list_remove_list(image_lookups, l);
|
||||
return ;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
data_queue_copied_image_lookup(int *src, int *dest, Eina_Bool *set)
|
||||
{
|
||||
|
@ -1603,6 +1620,7 @@ data_process_lookups(void)
|
|||
Group_Lookup *group;
|
||||
Image_Lookup *image;
|
||||
Eina_List *l;
|
||||
Eina_Hash *images_in_use;
|
||||
void *data;
|
||||
|
||||
EINA_LIST_FOREACH(edje_collections, l, pc)
|
||||
|
@ -1738,13 +1756,15 @@ data_process_lookups(void)
|
|||
free(group);
|
||||
}
|
||||
|
||||
images_in_use = eina_hash_string_superfast_new(NULL);
|
||||
|
||||
EINA_LIST_FREE(image_lookups, image)
|
||||
{
|
||||
Edje_Image_Directory_Entry *de;
|
||||
Eina_Bool find = EINA_FALSE;
|
||||
|
||||
if (edje_file->image_dir)
|
||||
{
|
||||
Edje_Image_Directory_Entry *de;
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < edje_file->image_dir->entries_count; ++i)
|
||||
|
@ -1760,6 +1780,9 @@ data_process_lookups(void)
|
|||
*(image->dest) = de->id;
|
||||
*(image->set) = EINA_FALSE;
|
||||
find = EINA_TRUE;
|
||||
|
||||
if (!eina_hash_find(images_in_use, image->name))
|
||||
eina_hash_direct_add(images_in_use, de->entry, de);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1778,6 +1801,9 @@ data_process_lookups(void)
|
|||
*(image->dest) = set->id;
|
||||
*(image->set) = EINA_TRUE;
|
||||
find = EINA_TRUE;
|
||||
|
||||
if (!eina_hash_find(images_in_use, image->name))
|
||||
eina_hash_direct_add(images_in_use, set->name, set);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1795,6 +1821,54 @@ data_process_lookups(void)
|
|||
free(image);
|
||||
}
|
||||
|
||||
if (edje_file->image_dir)
|
||||
{
|
||||
Edje_Image_Directory_Entry *de;
|
||||
Edje_Image_Directory_Set *set;
|
||||
unsigned int i;
|
||||
|
||||
for (i = 0; i < edje_file->image_dir->entries_count; ++i)
|
||||
{
|
||||
de = edje_file->image_dir->entries + i;
|
||||
|
||||
if (de->entry && eina_hash_find(images_in_use, de->entry))
|
||||
continue ;
|
||||
|
||||
if (verbose)
|
||||
{
|
||||
printf("%s: Image '%s' in ressource 'edje/image/%i' will not be included as it is unused.\n", progname, de->entry, de->id);
|
||||
}
|
||||
else
|
||||
{
|
||||
INF("Image '%s' in ressource 'edje/image/%i' will not be included as it is unused.", de->entry, de->id);
|
||||
}
|
||||
|
||||
de->entry = NULL;
|
||||
}
|
||||
|
||||
for (i = 0; i < edje_file->image_dir->sets_count; ++i)
|
||||
{
|
||||
set = edje_file->image_dir->sets + i;
|
||||
|
||||
if (set->name && eina_hash_find(images_in_use, set->name))
|
||||
continue ;
|
||||
|
||||
if (verbose)
|
||||
{
|
||||
printf("%s: Set '%s' will not be included as it is unused.\n", progname, set->name);
|
||||
}
|
||||
else
|
||||
{
|
||||
INF("Set '%s' will not be included as it is unused.", set->name);
|
||||
}
|
||||
|
||||
set->name = NULL;
|
||||
set->entries = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
eina_hash_free(images_in_use);
|
||||
|
||||
EINA_LIST_FREE(part_slave_lookups, data)
|
||||
free(data);
|
||||
|
||||
|
|
Loading…
Reference in New Issue