eo: Improve debug for efl_isa errors from threads

This commit is contained in:
Jean-Philippe Andre 2016-12-02 15:52:43 +09:00
parent dcaa66812e
commit b6fae524ff
1 changed files with 12 additions and 1 deletions

View File

@ -1465,10 +1465,11 @@ efl_isa(const Eo *eo_id, const Efl_Class *klass_id)
Eo_Id_Table_Data *tdata;
Eina_Bool isa = EINA_FALSE;
if (EINA_UNLIKELY(!eo_id)) return EINA_FALSE;
domain = ((Eo_Id)eo_id >> SHIFT_DOMAIN) & MASK_DOMAIN;
data = _eo_table_data_get();
tdata = _eo_table_data_table_get(data, domain);
if (!tdata) return EINA_FALSE;
if (EINA_UNLIKELY(!tdata)) goto err;
if (EINA_LIKELY(domain != EFL_ID_DOMAIN_SHARED))
{
@ -1532,6 +1533,16 @@ err_class:
_EO_POINTER_ERR("Class (%p) is an invalid ref.", klass_id);
err_obj:
return EINA_FALSE;
err:
if (!data) return EINA_FALSE;
ERR("Object %p is not a valid object in this context: object domain: %d, "
"current domain: %d, local domain: %d, available domains: [%s %s %s %s]",
eo_id, (int)domain,
(int)data->domain_stack[data->stack_top], (int)data->local_domain,
(data->tables[0]) ? "0" : " ", (data->tables[1]) ? "1" : " ",
(data->tables[2]) ? "2" : " ", (data->tables[3]) ? "3" : " ");
return EINA_FALSE;
}
EAPI Eo *