From: Enlightenment C. <no...@cv...> - 2008-02-26 20:12:04
|
Enlightenment CVS committal Author : barbieri Project : e17 Module : libs/edje Dir : e17/libs/edje/src/lib Modified Files: edje_load.c edje_main.c edje_match.c edje_private.h edje_program.c Log Message: Cleanup of last patches and revert my patching mistakes. Last 2 patches were swapped, I applied them in the wrong order and missed the rejections, my bad. I fixed it and also did some cleanup, looks better now. =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_load.c,v retrieving revision 1.115 retrieving revision 1.116 diff -u -3 -r1.115 -r1.116 --- edje_load.c 26 Feb 2008 19:06:33 -0000 1.115 +++ edje_load.c 26 Feb 2008 20:12:00 -0000 1.116 @@ -210,6 +210,25 @@ return str; } +static void +_edje_programs_patterns_clean(Edje *ed) +{ + _edje_signals_sources_patterns_clean(&ed->patterns.programs); +} + +static void +_edje_programs_patterns_init(Edje *ed) +{ + Edje_Signals_Sources_Patterns *ssp = &ed->patterns.programs; + Evas_List *programs = ed->collection->programs; + + if (ssp->signals_patterns) + return; + + ssp->signals_patterns = edje_match_programs_signal_init(programs); + ssp->sources_patterns = edje_match_programs_source_init(programs); +} + static int _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *part, Evas_List *group_path) { @@ -408,8 +427,7 @@ } } - ed->patterns.programs.signals_patterns = edje_match_programs_signal_init(ed->collection->programs); - ed->patterns.programs.sources_patterns = edje_match_programs_source_init(ed->collection->programs); + _edje_programs_patterns_init(ed); n = evas_list_count(ed->collection->programs); if (n > 0) @@ -603,14 +621,7 @@ _edje_message_del(ed); _edje_block_violate(ed); _edje_var_shutdown(ed); - - if (ed->patterns.programs.signals_patterns) - { - edje_match_patterns_free(ed->patterns.programs.signals_patterns); - edje_match_patterns_free(ed->patterns.programs.sources_patterns); - } - ed->patterns.programs.signals_patterns = NULL; - ed->patterns.programs.sources_patterns = NULL; + _edje_programs_patterns_clean(ed); if (!((ed->file) && (ed->collection))) return; if ((ed->file) && (ed->collection)) @@ -709,14 +720,6 @@ if (ed->table_programs) free(ed->table_programs); ed->table_programs = NULL; ed->table_programs_size = 0; - - if (ed->patterns.programs.signals_patterns) - { - edje_match_patterns_free(ed->patterns.programs.signals_patterns); - edje_match_patterns_free(ed->patterns.programs.sources_patterns); - } - ed->patterns.programs.signals_patterns = NULL; - ed->patterns.programs.sources_patterns = NULL; } /** * Used to free the cached data values that are stored in the data_cache =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_main.c,v retrieving revision 1.54 retrieving revision 1.55 diff -u -3 -r1.54 -r1.55 --- edje_main.c 26 Feb 2008 19:06:33 -0000 1.54 +++ edje_main.c 26 Feb 2008 20:12:00 -0000 1.55 @@ -90,7 +90,7 @@ return; } _edje_message_del(ed); - _edje_clean_callbacks_patterns(ed); + _edje_callbacks_patterns_clean(ed); _edje_file_del(ed); if (ed->path) evas_stringshare_del(ed->path); if (ed->part) evas_stringshare_del(ed->part); @@ -145,11 +145,6 @@ if (tc->name) evas_stringshare_del(tc->name); if (tc->font) evas_stringshare_del(tc->font); free(tc); - } - if (ed->patterns.callbacks.signals_patterns) - { - edje_match_patterns_free(ed->patterns.callbacks.signals_patterns); - edje_match_patterns_free(ed->patterns.callbacks.sources_patterns); } free(ed); } =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_match.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -3 -r1.2 -r1.3 --- edje_match.c 21 Feb 2008 18:48:36 -0000 1.2 +++ edje_match.c 26 Feb 2008 20:12:00 -0000 1.3 @@ -546,3 +546,14 @@ free(ppat); } +void +_edje_signals_sources_patterns_clean(Edje_Signals_Sources_Patterns *ssp) +{ + if (!ssp->signals_patterns) + return; + + edje_match_patterns_free(ssp->signals_patterns); + edje_match_patterns_free(ssp->sources_patterns); + ssp->signals_patterns = NULL; + ssp->sources_patterns = NULL; +} =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_private.h,v retrieving revision 1.139 retrieving revision 1.140 diff -u -3 -r1.139 -r1.140 --- edje_private.h 26 Feb 2008 18:41:44 -0000 1.139 +++ edje_private.h 26 Feb 2008 20:12:00 -0000 1.140 @@ -578,6 +578,14 @@ typedef struct _Edje_Var_Timer Edje_Var_Timer; typedef struct _Edje_Var_Pool Edje_Var_Pool; +struct _Edje_Signals_Sources_Patterns +{ + Edje_Patterns *signals_patterns; + Edje_Patterns *sources_patterns; +}; + +typedef struct _Edje_Signals_Sources_Patterns Edje_Signals_Sources_Patterns; + struct _Edje { const char *path; @@ -608,14 +616,8 @@ int table_parts_size; struct { - struct { - Edje_Patterns *signals_patterns; - Edje_Patterns *sources_patterns; - } callbacks; - struct { - Edje_Patterns *signals_patterns; - Edje_Patterns *sources_patterns; - } programs; + Edje_Signals_Sources_Patterns callbacks; + Edje_Signals_Sources_Patterns programs; } patterns; int references; @@ -1028,7 +1030,8 @@ void _edje_program_run(Edje *ed, Edje_Program *pr, int force, const char *ssig, const char *ssrc); void _edje_emit(Edje *ed, const char *sig, const char *src); void _edje_emit_handle(Edje *ed, const char *sig, const char *src); -void _edje_clean_callbacks_patterns(Edje *ed); +void _edje_signals_sources_patterns_clean(Edje_Signals_Sources_Patterns *ssp); +void _edje_callbacks_patterns_clean(Edje *ed); void _edje_text_init(void); void _edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep); =================================================================== RCS file: /cvs/e/e17/libs/edje/src/lib/edje_program.c,v retrieving revision 1.58 retrieving revision 1.59 diff -u -3 -r1.58 -r1.59 --- edje_program.c 26 Feb 2008 18:41:44 -0000 1.58 +++ edje_program.c 26 Feb 2008 20:12:00 -0000 1.59 @@ -106,7 +106,7 @@ ed->just_added_callbacks = 1; } else - _edje_clean_callbacks_patterns(ed); + _edje_callbacks_patterns_clean(ed); } /** Remove a callback from an object @@ -152,7 +152,7 @@ } else { - _edje_clean_callbacks_patterns(ed); + _edje_callbacks_patterns_clean(ed); ed->callbacks = evas_list_remove_list(ed->callbacks, l); if (escb->signal) evas_stringshare_del(escb->signal); @@ -863,6 +863,25 @@ return 0; } + +void +_edje_callbacks_patterns_clean(Edje *ed) +{ + _edje_signals_sources_patterns_clean(&ed->patterns.callbacks); +} + +static void +_edje_callbacks_patterns_init(Edje *ed) +{ + Edje_Signals_Sources_Patterns *ssp = &ed->patterns.callbacks; + + if (ssp->signals_patterns) + return; + + ssp->signals_patterns = edje_match_callback_signal_init(ed->callbacks); + ssp->sources_patterns = edje_match_callback_source_init(ed->callbacks); +} + /* FIXME: what if we delete the evas object??? */ void _edje_emit_handle(Edje *ed, const char *sig, const char *src) @@ -978,7 +997,7 @@ _edje_block(ed); if (ed->just_added_callbacks) - _edje_clean_callbacks_patterns(ed); + _edje_callbacks_patterns_clean(ed); ed->walking_callbacks = 1; @@ -986,12 +1005,7 @@ { int r; - if (!ed->patterns.callbacks.signals_patterns) - { - ed->patterns.callbacks.signals_patterns = edje_match_callback_signal_init(ed->callbacks); - ed->patterns.callbacks.sources_patterns = edje_match_callback_source_init(ed->callbacks); - } - + _edje_callbacks_patterns_init(ed); r = edje_match_callback_exec(ed->patterns.callbacks.signals_patterns, ed->patterns.callbacks.sources_patterns, sig, @@ -1027,23 +1041,10 @@ l = next_l; } - _edje_clean_callbacks_patterns(ed); + _edje_callbacks_patterns_clean(ed); } break_prog: _edje_unblock(ed); _edje_thaw(ed); _edje_unref(ed); } - -void -_edje_clean_callbacks_patterns(Edje *ed) -{ - if (ed->patterns.callbacks.signals_patterns) - { - edje_match_patterns_free(ed->patterns.callbacks.signals_patterns); - edje_match_patterns_free(ed->patterns.callbacks.sources_patterns); - ed->patterns.callbacks.signals_patterns = NULL; - ed->patterns.callbacks.sources_patterns = NULL; - } -} - |