forked from enlightenment/efl
formatting fix + list walk optimisation.
SVN revision: 51874
This commit is contained in:
parent
2c397940de
commit
2d34d6d2a3
|
@ -133,30 +133,30 @@ _edje_match_patterns_exec_class_token(enum status *status,
|
|||
const char *cl_tok,
|
||||
char c)
|
||||
{
|
||||
if (! *cl_tok)
|
||||
{
|
||||
*status = patterns_syntax_error;
|
||||
return 0;
|
||||
}
|
||||
else if (cl_tok[1] == '-' && cl_tok[2] != ']')
|
||||
{
|
||||
if (*cl_tok <= c && c <= cl_tok[2])
|
||||
*status = patterns_found;
|
||||
return 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (c == *cl_tok)
|
||||
*status = patterns_found;
|
||||
return 1;
|
||||
}
|
||||
if (! *cl_tok)
|
||||
{
|
||||
*status = patterns_syntax_error;
|
||||
return 0;
|
||||
}
|
||||
else if (cl_tok[1] == '-' && cl_tok[2] != ']')
|
||||
{
|
||||
if (*cl_tok <= c && c <= cl_tok[2])
|
||||
*status = patterns_found;
|
||||
return 3;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (c == *cl_tok)
|
||||
*status = patterns_found;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
static Edje_Match_Error
|
||||
_edje_match_patterns_exec_class_complement(const char *cl_tok, size_t *ret)
|
||||
{
|
||||
switch (*cl_tok)
|
||||
{
|
||||
switch (*cl_tok)
|
||||
{
|
||||
case 0:
|
||||
return EDJE_MATCH_SYNTAX_ERROR;
|
||||
|
||||
|
@ -164,10 +164,10 @@ _edje_match_patterns_exec_class_complement(const char *cl_tok, size_t *ret)
|
|||
*ret = 1;
|
||||
return EDJE_MATCH_OK;
|
||||
|
||||
default:
|
||||
*ret = 0;
|
||||
return EDJE_MATCH_OK;
|
||||
}
|
||||
default:
|
||||
*ret = 0;
|
||||
return EDJE_MATCH_OK;
|
||||
}
|
||||
}
|
||||
|
||||
static Edje_Match_Error
|
||||
|
@ -180,21 +180,23 @@ _edje_match_patterns_exec_class(const char *cl,
|
|||
size_t neg;
|
||||
|
||||
if (_edje_match_patterns_exec_class_complement(cl + 1, &neg) != EDJE_MATCH_OK)
|
||||
return EDJE_MATCH_SYNTAX_ERROR;
|
||||
return EDJE_MATCH_SYNTAX_ERROR;
|
||||
|
||||
pos += neg;
|
||||
|
||||
do
|
||||
pos += _edje_match_patterns_exec_class_token(&status, cl + pos, c);
|
||||
{
|
||||
pos += _edje_match_patterns_exec_class_token(&status, cl + pos, c);
|
||||
}
|
||||
while (cl[pos] && cl[pos] != ']');
|
||||
|
||||
if (status == patterns_syntax_error || ! cl[pos])
|
||||
return EDJE_MATCH_SYNTAX_ERROR;
|
||||
return EDJE_MATCH_SYNTAX_ERROR;
|
||||
|
||||
if (status == patterns_found)
|
||||
*ret = neg ? 0 : pos + 1;
|
||||
*ret = neg ? 0 : pos + 1;
|
||||
else
|
||||
*ret = neg ? pos + 1 : 0;
|
||||
*ret = neg ? pos + 1 : 0;
|
||||
|
||||
return EDJE_MATCH_OK;
|
||||
}
|
||||
|
@ -389,8 +391,10 @@ _edje_match_collection_dir_exec_finals(const size_t *finals,
|
|||
size_t i;
|
||||
|
||||
for (i = 0; i < states->size; ++i)
|
||||
if (states->states[i].pos >= finals[states->states[i].idx])
|
||||
return EINA_TRUE;
|
||||
{
|
||||
if (states->states[i].pos >= finals[states->states[i].idx])
|
||||
return EINA_TRUE;
|
||||
}
|
||||
return EINA_FALSE;
|
||||
}
|
||||
|
||||
|
@ -407,20 +411,26 @@ edje_match_programs_exec_check_finals(const size_t *signal_finals,
|
|||
size_t j;
|
||||
|
||||
for (i = 0; i < signal_states->size; ++i)
|
||||
if (signal_states->states[i].pos >= signal_finals[signal_states->states[i].idx])
|
||||
for (j = 0; j < source_states->size; ++j)
|
||||
if (signal_states->states[i].idx == source_states->states[j].idx
|
||||
&& source_states->states[j].pos >= source_finals[source_states->states[j].idx])
|
||||
{
|
||||
Edje_Program *pr;
|
||||
{
|
||||
if (signal_states->states[i].pos >= signal_finals[signal_states->states[i].idx])
|
||||
{
|
||||
for (j = 0; j < source_states->size; ++j)
|
||||
{
|
||||
if (signal_states->states[i].idx == source_states->states[j].idx
|
||||
&& source_states->states[j].pos >= source_finals[source_states->states[j].idx])
|
||||
{
|
||||
Edje_Program *pr;
|
||||
|
||||
pr = programs[signal_states->states[i].idx];
|
||||
if (pr)
|
||||
{
|
||||
if (func(pr, data))
|
||||
return EINA_FALSE;
|
||||
}
|
||||
}
|
||||
pr = programs[signal_states->states[i].idx];
|
||||
if (pr)
|
||||
{
|
||||
if (func(pr, data))
|
||||
return EINA_FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return EINA_TRUE;
|
||||
}
|
||||
|
@ -442,28 +452,34 @@ edje_match_callback_exec_check_finals(const Edje_Patterns *singal_ppat,
|
|||
int r = 1;
|
||||
|
||||
for (i = 0; i < signal_states->size; ++i)
|
||||
if (signal_states->states[i].pos >= signal_finals[signal_states->states[i].idx])
|
||||
for (j = 0; j < source_states->size; ++j)
|
||||
if (signal_states->states[i].idx == source_states->states[j].idx
|
||||
&& source_states->states[j].pos >= source_finals[source_states->states[j].idx])
|
||||
{
|
||||
Edje_Signal_Callback *escb;
|
||||
{
|
||||
if (signal_states->states[i].pos >= signal_finals[signal_states->states[i].idx])
|
||||
{
|
||||
for (j = 0; j < source_states->size; ++j)
|
||||
{
|
||||
if (signal_states->states[i].idx == source_states->states[j].idx
|
||||
&& source_states->states[j].pos >= source_finals[source_states->states[j].idx])
|
||||
{
|
||||
Edje_Signal_Callback *escb;
|
||||
|
||||
escb = eina_list_nth(callbacks, signal_states->states[i].idx);
|
||||
if (escb)
|
||||
{
|
||||
if ((!escb->just_added)
|
||||
&& (!escb->delete_me))
|
||||
{
|
||||
escb->func(escb->data, ed->obj, signal, source);
|
||||
r = 2;
|
||||
}
|
||||
if (_edje_block_break(ed))
|
||||
return 0;
|
||||
if ((singal_ppat->delete_me) || (source_ppat->delete_me))
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
escb = eina_list_nth(callbacks, signal_states->states[i].idx);
|
||||
if (escb)
|
||||
{
|
||||
if ((!escb->just_added)
|
||||
&& (!escb->delete_me))
|
||||
{
|
||||
escb->func(escb->data, ed->obj, signal, source);
|
||||
r = 2;
|
||||
}
|
||||
if (_edje_block_break(ed))
|
||||
return 0;
|
||||
if ((singal_ppat->delete_me) || (source_ppat->delete_me))
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
||||
|
@ -489,7 +505,7 @@ _edje_match_fn(const Edje_Patterns *ppat,
|
|||
const size_t pos = states->states[i].pos;
|
||||
|
||||
if (!ppat->patterns[idx][pos])
|
||||
continue;
|
||||
continue;
|
||||
else if (ppat->patterns[idx][pos] == '*')
|
||||
{
|
||||
_edje_match_states_insert(states, ppat->max_length, idx, pos + 1);
|
||||
|
@ -502,18 +518,18 @@ _edje_match_fn(const Edje_Patterns *ppat,
|
|||
if (_edje_match_patterns_exec_token(ppat->patterns[idx] + pos,
|
||||
*c,
|
||||
&m) != EDJE_MATCH_OK)
|
||||
return NULL;
|
||||
return NULL;
|
||||
|
||||
if (m)
|
||||
_edje_match_states_insert(new_states, ppat->max_length, idx, pos + m);
|
||||
_edje_match_states_insert(new_states, ppat->max_length, idx, pos + m);
|
||||
}
|
||||
}
|
||||
{
|
||||
Edje_States *tmp = states;
|
||||
{
|
||||
Edje_States *tmp = states;
|
||||
|
||||
states = new_states;
|
||||
new_states = tmp;
|
||||
}
|
||||
states = new_states;
|
||||
new_states = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
return states;
|
||||
|
@ -531,7 +547,7 @@ edje_match_collection_dir_exec(const Edje_Patterns *ppat,
|
|||
result = _edje_match_fn(ppat, string, ppat->states);
|
||||
|
||||
if (result)
|
||||
r = _edje_match_collection_dir_exec_finals(ppat->finals, result);
|
||||
r = _edje_match_collection_dir_exec_finals(ppat->finals, result);
|
||||
|
||||
return r;
|
||||
}
|
||||
|
@ -560,13 +576,13 @@ edje_match_programs_exec(const Edje_Patterns *ppat_signal,
|
|||
source_result = _edje_match_fn(ppat_source, source, ppat_source->states);
|
||||
|
||||
if (signal_result && source_result)
|
||||
r = edje_match_programs_exec_check_finals(ppat_signal->finals,
|
||||
ppat_source->finals,
|
||||
signal_result,
|
||||
source_result,
|
||||
programs,
|
||||
func,
|
||||
data);
|
||||
r = edje_match_programs_exec_check_finals(ppat_signal->finals,
|
||||
ppat_source->finals,
|
||||
signal_result,
|
||||
source_result,
|
||||
programs,
|
||||
func,
|
||||
data);
|
||||
return r;
|
||||
}
|
||||
|
||||
|
@ -595,16 +611,16 @@ edje_match_callback_exec(Edje_Patterns *ppat_signal,
|
|||
source_result = _edje_match_fn(ppat_source, source, ppat_source->states);
|
||||
|
||||
if (signal_result && source_result)
|
||||
r = edje_match_callback_exec_check_finals(ppat_signal,
|
||||
ppat_source,
|
||||
ppat_signal->finals,
|
||||
ppat_source->finals,
|
||||
signal_result,
|
||||
source_result,
|
||||
signal,
|
||||
source,
|
||||
callbacks,
|
||||
ed);
|
||||
r = edje_match_callback_exec_check_finals(ppat_signal,
|
||||
ppat_source,
|
||||
ppat_signal->finals,
|
||||
ppat_source->finals,
|
||||
signal_result,
|
||||
source_result,
|
||||
signal,
|
||||
source,
|
||||
callbacks,
|
||||
ed);
|
||||
ppat_signal->ref--;
|
||||
ppat_source->ref--;
|
||||
if (ppat_signal->ref <= 0) edje_match_patterns_free(ppat_signal);
|
||||
|
@ -696,7 +712,7 @@ edje_match_program_hash_build(Edje_Program * const *programs,
|
|||
item->list = eina_list_prepend(item->list, programs[i]);
|
||||
}
|
||||
else
|
||||
result = eina_list_prepend(result, programs[i]);
|
||||
result = eina_list_prepend(result, programs[i]);
|
||||
}
|
||||
|
||||
*tree = new;
|
||||
|
@ -737,7 +753,7 @@ edje_match_callback_hash_build(const Eina_List *callbacks,
|
|||
item->list = eina_list_prepend(item->list, callback);
|
||||
}
|
||||
else
|
||||
result = eina_list_prepend(result, callback);
|
||||
result = eina_list_prepend(result, callback);
|
||||
}
|
||||
|
||||
*tree = new;
|
||||
|
|
|
@ -96,7 +96,7 @@ edje_object_message_handler_set(Evas_Object *obj, void (*func) (void *data, Evas
|
|||
EAPI void
|
||||
edje_object_message_signal_process(Evas_Object *obj)
|
||||
{
|
||||
Eina_List *l, *tmpq = NULL;
|
||||
Eina_List *l, *ln, *tmpq = NULL;
|
||||
Edje *ed;
|
||||
Edje_Message *em;
|
||||
const void *data;
|
||||
|
@ -104,12 +104,17 @@ edje_object_message_signal_process(Evas_Object *obj)
|
|||
ed = _edje_fetch(obj);
|
||||
if (!ed) return;
|
||||
|
||||
EINA_LIST_FOREACH(msgq, l, em)
|
||||
if (em->edje == ed)
|
||||
tmpq = eina_list_append(tmpq, em);
|
||||
/* now remove them from the old queue */
|
||||
EINA_LIST_FOREACH(tmpq, l, data)
|
||||
msgq = eina_list_remove(msgq, data);
|
||||
for (l = msgq; l; )
|
||||
{
|
||||
ln = l->next;
|
||||
em = l->data;
|
||||
if (em->edje == ed)
|
||||
{
|
||||
tmpq = eina_list_append(tmpq, em);
|
||||
msgq = eina_list_remove_list(msgq, l);
|
||||
}
|
||||
l = ln;
|
||||
}
|
||||
/* a temporary message queue */
|
||||
if (tmp_msgq)
|
||||
{
|
||||
|
|
|
@ -1144,7 +1144,7 @@ _edje_emit_handle(Edje *ed, const char *sig, const char *src)
|
|||
if (ed->delete_me) return;
|
||||
if (!sig) sig = "";
|
||||
if (!src) src = "";
|
||||
// printf("EDJE EMIT: signal: \"%s\" source: \"%s\"\n", sig, src);
|
||||
// printf("EDJE EMIT: (%p) signal: \"%s\" source: \"%s\"\n", ed, sig, src);
|
||||
_edje_block(ed);
|
||||
_edje_ref(ed);
|
||||
_edje_freeze(ed);
|
||||
|
|
Loading…
Reference in New Issue