forked from enlightenment/efl
Edje_pick Fix
Signed-off-by: Aharon Hillel <a.hillel@samsung.com> SVN revision: 80305
This commit is contained in:
parent
8e1879ade9
commit
4b801a124a
|
@ -41,14 +41,7 @@ source_edd(void)
|
|||
_external_list_edd = eet_data_descriptor_stream_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_external_list_edd, External_List, "list", list, _external_edd);
|
||||
|
||||
eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "font", sizeof (Font));
|
||||
_font_edd = eet_data_descriptor_stream_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font, "file", file, EET_T_INLINED_STRING);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(_font_edd, Font, "name", name, EET_T_INLINED_STRING);
|
||||
|
||||
eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc), "font_list", sizeof (Font_List));
|
||||
_font_list_edd = eet_data_descriptor_stream_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(_font_list_edd, Font_List, "list", list, _font_edd);
|
||||
_edje_data_font_list_desc_make(&_font_list_edd, &_font_edd);
|
||||
}
|
||||
|
||||
static void source_fetch_file(const char *fil, const char *filname);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -7,6 +7,68 @@ static Eina_List *_edje_file_cache = NULL;
|
|||
|
||||
static int _edje_collection_cache_size = 16;
|
||||
|
||||
EAPI void
|
||||
edje_cache_emp_alloc(Edje_Part_Collection_Directory_Entry *ce)
|
||||
{ /* Init Eina Mempools this is also used in edje_pick.c */
|
||||
char *buffer;
|
||||
#define INIT_EMP(Tp, Sz, Ce) \
|
||||
buffer = alloca(strlen(ce->entry) + strlen(#Tp) + 2); \
|
||||
sprintf(buffer, "%s/%s", ce->entry, #Tp); \
|
||||
Ce->mp.Tp = eina_mempool_add("one_big", buffer, NULL, sizeof (Sz), Ce->count.Tp); \
|
||||
_emp_##Tp = Ce->mp.Tp;
|
||||
|
||||
#define INIT_EMP_BOTH(Tp, Sz, Ce) \
|
||||
INIT_EMP(Tp, Sz, Ce) \
|
||||
Ce->mp_rtl.Tp = eina_mempool_add("one_big", buffer, NULL, \
|
||||
sizeof (Sz), Ce->count.Tp);
|
||||
|
||||
INIT_EMP_BOTH(RECTANGLE, Edje_Part_Description_Common, ce);
|
||||
INIT_EMP_BOTH(TEXT, Edje_Part_Description_Text, ce);
|
||||
INIT_EMP_BOTH(IMAGE, Edje_Part_Description_Image, ce);
|
||||
INIT_EMP_BOTH(PROXY, Edje_Part_Description_Proxy, ce);
|
||||
INIT_EMP_BOTH(SWALLOW, Edje_Part_Description_Common, ce);
|
||||
INIT_EMP_BOTH(TEXTBLOCK, Edje_Part_Description_Text, ce);
|
||||
INIT_EMP_BOTH(GROUP, Edje_Part_Description_Common, ce);
|
||||
INIT_EMP_BOTH(BOX, Edje_Part_Description_Box, ce);
|
||||
INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce);
|
||||
INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce);
|
||||
INIT_EMP_BOTH(SPACER, Edje_Part_Description_Common, ce);
|
||||
INIT_EMP(part, Edje_Part, ce);
|
||||
}
|
||||
|
||||
EAPI void
|
||||
edje_cache_emp_free(Edje_Part_Collection_Directory_Entry *ce)
|
||||
{ /* Free Eina Mempools this is also used in edje_pick.c */
|
||||
/* Destroy all part and description. */
|
||||
eina_mempool_del(ce->mp.RECTANGLE);
|
||||
eina_mempool_del(ce->mp.TEXT);
|
||||
eina_mempool_del(ce->mp.IMAGE);
|
||||
eina_mempool_del(ce->mp.PROXY);
|
||||
eina_mempool_del(ce->mp.SWALLOW);
|
||||
eina_mempool_del(ce->mp.TEXTBLOCK);
|
||||
eina_mempool_del(ce->mp.GROUP);
|
||||
eina_mempool_del(ce->mp.BOX);
|
||||
eina_mempool_del(ce->mp.TABLE);
|
||||
eina_mempool_del(ce->mp.EXTERNAL);
|
||||
eina_mempool_del(ce->mp.SPACER);
|
||||
eina_mempool_del(ce->mp.part);
|
||||
memset(&ce->mp, 0, sizeof (ce->mp));
|
||||
|
||||
eina_mempool_del(ce->mp_rtl.RECTANGLE);
|
||||
eina_mempool_del(ce->mp_rtl.TEXT);
|
||||
eina_mempool_del(ce->mp_rtl.IMAGE);
|
||||
eina_mempool_del(ce->mp_rtl.PROXY);
|
||||
eina_mempool_del(ce->mp_rtl.SWALLOW);
|
||||
eina_mempool_del(ce->mp_rtl.TEXTBLOCK);
|
||||
eina_mempool_del(ce->mp_rtl.GROUP);
|
||||
eina_mempool_del(ce->mp_rtl.BOX);
|
||||
eina_mempool_del(ce->mp_rtl.TABLE);
|
||||
eina_mempool_del(ce->mp_rtl.EXTERNAL);
|
||||
eina_mempool_del(ce->mp_rtl.SPACER);
|
||||
memset(&ce->mp_rtl, 0, sizeof (ce->mp_rtl));
|
||||
ce->ref = NULL;
|
||||
}
|
||||
|
||||
static Edje_Part_Collection *
|
||||
_edje_file_coll_open(Edje_File *edf, const char *coll)
|
||||
{
|
||||
|
@ -15,7 +77,6 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
|
|||
int id = -1, size = 0;
|
||||
Eina_List *l;
|
||||
char buf[256];
|
||||
char *buffer;
|
||||
void *data;
|
||||
|
||||
ce = eina_hash_find(edf->collection, coll);
|
||||
|
@ -42,30 +103,7 @@ _edje_file_coll_open(Edje_File *edf, const char *coll)
|
|||
id = ce->id;
|
||||
if (id < 0) return NULL;
|
||||
|
||||
#define INIT_EMP(Tp, Sz, Ce) \
|
||||
buffer = alloca(strlen(ce->entry) + strlen(#Tp) + 2); \
|
||||
sprintf(buffer, "%s/%s", ce->entry, #Tp); \
|
||||
Ce->mp.Tp = eina_mempool_add("one_big", buffer, NULL, sizeof (Sz), Ce->count.Tp); \
|
||||
_emp_##Tp = Ce->mp.Tp;
|
||||
|
||||
#define INIT_EMP_BOTH(Tp, Sz, Ce) \
|
||||
INIT_EMP(Tp, Sz, Ce) \
|
||||
Ce->mp_rtl.Tp = eina_mempool_add("one_big", buffer, NULL, \
|
||||
sizeof (Sz), Ce->count.Tp);
|
||||
|
||||
INIT_EMP_BOTH(RECTANGLE, Edje_Part_Description_Common, ce);
|
||||
INIT_EMP_BOTH(TEXT, Edje_Part_Description_Text, ce);
|
||||
INIT_EMP_BOTH(IMAGE, Edje_Part_Description_Image, ce);
|
||||
INIT_EMP_BOTH(PROXY, Edje_Part_Description_Proxy, ce);
|
||||
INIT_EMP_BOTH(SWALLOW, Edje_Part_Description_Common, ce);
|
||||
INIT_EMP_BOTH(TEXTBLOCK, Edje_Part_Description_Text, ce);
|
||||
INIT_EMP_BOTH(GROUP, Edje_Part_Description_Common, ce);
|
||||
INIT_EMP_BOTH(BOX, Edje_Part_Description_Box, ce);
|
||||
INIT_EMP_BOTH(TABLE, Edje_Part_Description_Table, ce);
|
||||
INIT_EMP_BOTH(EXTERNAL, Edje_Part_Description_External, ce);
|
||||
INIT_EMP_BOTH(SPACER, Edje_Part_Description_Common, ce);
|
||||
INIT_EMP(part, Edje_Part, ce);
|
||||
|
||||
edje_cache_emp_alloc(ce);
|
||||
snprintf(buf, sizeof(buf), "edje/collections/%i", id);
|
||||
edc = eet_data_read(edf->ef, _edje_edd_edje_part_collection, buf);
|
||||
if (!edc) return NULL;
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
#include "edje_cc.h" /* For struct Font */
|
||||
#include "edje_private.h"
|
||||
|
||||
EAPI Eet_Data_Descriptor *_edje_edd_edje_file = NULL;
|
||||
|
@ -949,3 +950,24 @@ _edje_edd_init(void)
|
|||
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_collection, Edje_Part_Collection, "physics_enabled", physics_enabled, EET_T_UCHAR);
|
||||
#endif
|
||||
}
|
||||
|
||||
EAPI void
|
||||
_edje_data_font_list_desc_make(Eet_Data_Descriptor **_font_list_edd,
|
||||
Eet_Data_Descriptor **_font_edd)
|
||||
{ /* User have to free: _font_list_edd, _font_edd */
|
||||
Eet_Data_Descriptor_Class eddc;
|
||||
|
||||
eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc),
|
||||
"font", sizeof (Font));
|
||||
*_font_edd = eet_data_descriptor_stream_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(*_font_edd, Font,
|
||||
"file", file, EET_T_INLINED_STRING);
|
||||
EET_DATA_DESCRIPTOR_ADD_BASIC(*_font_edd, Font,
|
||||
"name", name, EET_T_INLINED_STRING);
|
||||
|
||||
eet_eina_stream_data_descriptor_class_set(&eddc, sizeof (eddc),
|
||||
"font_list", sizeof (Font_List));
|
||||
*_font_list_edd = eet_data_descriptor_stream_new(&eddc);
|
||||
EET_DATA_DESCRIPTOR_ADD_LIST(*_font_list_edd, Font_List,
|
||||
"list", list, *_font_edd);
|
||||
}
|
||||
|
|
|
@ -1638,34 +1638,8 @@ _edje_collection_free(Edje_File *edf, Edje_Part_Collection *ec, Edje_Part_Collec
|
|||
eina_hash_free(ec->aliased);
|
||||
|
||||
/* Destroy all part and description. */
|
||||
eina_mempool_del(ce->mp.RECTANGLE);
|
||||
eina_mempool_del(ce->mp.TEXT);
|
||||
eina_mempool_del(ce->mp.IMAGE);
|
||||
eina_mempool_del(ce->mp.PROXY);
|
||||
eina_mempool_del(ce->mp.SWALLOW);
|
||||
eina_mempool_del(ce->mp.TEXTBLOCK);
|
||||
eina_mempool_del(ce->mp.GROUP);
|
||||
eina_mempool_del(ce->mp.BOX);
|
||||
eina_mempool_del(ce->mp.TABLE);
|
||||
eina_mempool_del(ce->mp.EXTERNAL);
|
||||
eina_mempool_del(ce->mp.SPACER);
|
||||
eina_mempool_del(ce->mp.part);
|
||||
memset(&ce->mp, 0, sizeof (ce->mp));
|
||||
|
||||
eina_mempool_del(ce->mp_rtl.RECTANGLE);
|
||||
eina_mempool_del(ce->mp_rtl.TEXT);
|
||||
eina_mempool_del(ce->mp_rtl.IMAGE);
|
||||
eina_mempool_del(ce->mp_rtl.PROXY);
|
||||
eina_mempool_del(ce->mp_rtl.SWALLOW);
|
||||
eina_mempool_del(ce->mp_rtl.TEXTBLOCK);
|
||||
eina_mempool_del(ce->mp_rtl.GROUP);
|
||||
eina_mempool_del(ce->mp_rtl.BOX);
|
||||
eina_mempool_del(ce->mp_rtl.TABLE);
|
||||
eina_mempool_del(ce->mp_rtl.EXTERNAL);
|
||||
eina_mempool_del(ce->mp_rtl.SPACER);
|
||||
memset(&ce->mp_rtl, 0, sizeof (ce->mp_rtl));
|
||||
edje_cache_emp_free(ce);
|
||||
free(ec);
|
||||
ce->ref = NULL;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -1731,8 +1731,9 @@ const Eina_Array *edje_match_signal_source_hash_get(const char *signal,
|
|||
const Eina_Rbtree *tree);
|
||||
void edje_match_signal_source_free(Edje_Signal_Source_Char *key, void *data);
|
||||
|
||||
// FIXME remove below 2 eapi decls when edje_convert goes
|
||||
// FIXME remove below 3 eapi decls when edje_convert goes
|
||||
EAPI void _edje_edd_init(void);
|
||||
EAPI void _edje_data_font_list_desc_make(Eet_Data_Descriptor **_font_list_edd, Eet_Data_Descriptor **_font_edd);
|
||||
EAPI void _edje_edd_shutdown(void);
|
||||
|
||||
EAPI extern Eet_Data_Descriptor *_edje_edd_edje_file;
|
||||
|
@ -1967,6 +1968,8 @@ Edje_File *_edje_cache_file_coll_open(const char *file, const char *coll, int *e
|
|||
void _edje_cache_coll_clean(Edje_File *edf);
|
||||
void _edje_cache_coll_flush(Edje_File *edf);
|
||||
void _edje_cache_coll_unref(Edje_File *edf, Edje_Part_Collection *edc);
|
||||
EAPI void edje_cache_emp_alloc(Edje_Part_Collection_Directory_Entry *ce);
|
||||
EAPI void edje_cache_emp_free(Edje_Part_Collection_Directory_Entry *ce);
|
||||
EAPI void _edje_cache_file_unref(Edje_File *edf);
|
||||
|
||||
void _edje_embryo_globals_init(Edje *ed);
|
||||
|
|
Loading…
Reference in New Issue