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. SVN revision: 33855
This commit is contained in:
parent
c48465c86a
commit
9abfa8f70a
|
@ -210,6 +210,25 @@ edje_file_data_get(const char *file, const char *key)
|
|||
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 @@ _edje_object_file_set_internal(Evas_Object *obj, const char *file, const char *p
|
|||
}
|
||||
}
|
||||
|
||||
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_file_del(Edje *ed)
|
|||
_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 @@ _edje_file_del(Edje *ed)
|
|||
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
|
||||
|
|
|
@ -90,7 +90,7 @@ _edje_del(Edje *ed)
|
|||
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);
|
||||
|
@ -146,11 +146,6 @@ _edje_del(Edje *ed)
|
|||
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);
|
||||
}
|
||||
|
||||
|
|
|
@ -546,3 +546,14 @@ edje_match_patterns_free(Edje_Patterns *ppat)
|
|||
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;
|
||||
}
|
||||
|
|
|
@ -578,6 +578,14 @@ typedef struct _Edje_Var_Animator Edje_Var_Animator;
|
|||
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 @@ struct _Edje
|
|||
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_end(Edje *ed, Edje_Running_Program *runp);
|
|||
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);
|
||||
|
|
|
@ -106,7 +106,7 @@ edje_object_signal_callback_add(Evas_Object *obj, const char *emission, const ch
|
|||
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 @@ edje_object_signal_callback_del(Evas_Object *obj, const char *emission, const ch
|
|||
}
|
||||
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 @@ static int _edje_glob_callback(Edje_Program *pr, void *dt)
|
|||
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_emit_cb(Edje *ed, const char *sig, const char *src)
|
|||
_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 @@ _edje_emit_cb(Edje *ed, const char *sig, const char *src)
|
|||
{
|
||||
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 @@ _edje_emit_cb(Edje *ed, const char *sig, const char *src)
|
|||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue