_tick_start(void)
{
tick++;
- if (tick > 1) return;
- _tick_send(1);
+ if (tick == 1) _tick_send(1);
}
static void
{
if (tick <= 0) return;
tick--;
- if (tick > 0) return;
- _tick_send(0);
+ if (tick == 0) _tick_send(0);
}
/*--------------------------------------------------------------------*/
EINA_LIST_FOREACH(clients, l, cdat)
{
- ecore_con_client_send(cdat->client, &t, sizeof(t));
+ if (cdat->enabled > 0)
+ ecore_con_client_send(cdat->client, &t, sizeof(t));
}
}
Clientdata *cdat = ecore_con_client_data_get(ev->client);
if (cdat)
{
- clients = eina_list_remove(clients, cdat);
while (cdat->enabled > 0)
{
- _tick_end();
cdat->enabled--;
+ if (cdat->enabled == 0) _tick_end();
}
+ clients = eina_list_remove(clients, cdat);
free(cdat);
}
return EINA_FALSE;
if (dat[i])
{
cdat->enabled++;
- _tick_start();
+ if (cdat->enabled == 1) _tick_start();
}
else
{
- cdat->enabled--;
- _tick_end();
+ if (cdat->enabled > 0)
+ {
+ cdat->enabled--;
+ if (cdat->enabled == 0) _tick_end();
+ }
}
}
}