fix ecore-con tracking of event count lists for clients!!! thanks

valgrind!



SVN revision: 65647
This commit is contained in:
Carsten Haitzler 2011-11-28 12:06:50 +00:00
parent 03996e4dac
commit d3e45fc7a7
1 changed files with 19 additions and 16 deletions

View File

@ -2365,15 +2365,15 @@ _ecore_con_event_client_add_free(Ecore_Con_Server *svr,
e = ev;
if (e->client)
{
e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e);
if ((!e->client->event_count) && (e->client->delete_me))
ecore_con_client_del(e->client);
e->client->event_count = eina_list_remove(e->client->event_count, e);
if (e->client->host_server)
{
e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, ev);
if ((!svr->event_count) && (svr->delete_me))
_ecore_con_server_free(svr);
}
if ((!e->client->event_count) && (e->client->delete_me))
ecore_con_client_del(e->client);
}
ecore_con_event_client_add_free(e);
@ -2391,15 +2391,15 @@ _ecore_con_event_client_del_free(Ecore_Con_Server *svr,
e = ev;
if (e->client)
{
e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e);
if ((!e->client->event_count) && (e->client->delete_me))
ecore_con_client_del(e->client);
e->client->event_count = eina_list_remove(e->client->event_count, e);
if (e->client->host_server)
{
e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, ev);
if ((!svr->event_count) && (svr->delete_me))
_ecore_con_server_free(svr);
}
if ((!e->client->event_count) && (e->client->delete_me))
ecore_con_client_del(e->client);
}
ecore_con_event_client_del_free(e);
_ecore_con_event_count--;
@ -2413,18 +2413,18 @@ _ecore_con_event_client_write_free(Ecore_Con_Server *svr,
{
if (e->client)
{
e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e);
if (((!e->client->event_count) && (e->client->delete_me)) ||
((e->client->host_server &&
((e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_UDP ||
(e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_MCAST))))
ecore_con_client_del(e->client);
e->client->event_count = eina_list_remove(e->client->event_count, e);
if (e->client->host_server)
{
e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e);
if ((!svr->event_count) && (svr->delete_me))
_ecore_con_server_free(svr);
}
if (((!e->client->event_count) && (e->client->delete_me)) ||
((e->client->host_server &&
((e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_UDP ||
(e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_MCAST))))
ecore_con_client_del(e->client);
}
ecore_con_event_client_write_free(e);
_ecore_con_event_count--;
@ -2441,15 +2441,18 @@ _ecore_con_event_client_data_free(Ecore_Con_Server *svr,
e = ev;
if (e->client)
{
e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, e);
e->client->event_count = eina_list_remove(e->client->event_count, e);
if (e->client->host_server)
{
e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, ev);
}
if ((!svr->event_count) && (svr->delete_me))
_ecore_con_server_free(svr);
if (((!e->client->event_count) && (e->client->delete_me)) ||
((e->client->host_server &&
((e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_UDP ||
(e->client->host_server->type & ECORE_CON_TYPE) == ECORE_CON_REMOTE_MCAST))))
ecore_con_client_del(e->client);
e->client->host_server->event_count = eina_list_remove(e->client->host_server->event_count, ev);
if ((!svr->event_count) && (svr->delete_me))
_ecore_con_server_free(svr);
}
free(e->data);
ecore_con_event_client_data_free(e);