if (!evnt_shutdown_w(evnt))
if (evnt->flag_insta_close || !evnt_shutdown_w(evnt))
static void evnt__timer_cb_mtime(int type, void *data){  struct Evnt *evnt = data;  struct timeval tv[1];  unsigned long diff = 0;  if (!evnt) /* deleted */    return;    ASSERT(evnt__valid(evnt));    if (type == TIMER_Q_TYPE_CALL_RUN_ALL)    return;  evnt->tm_o = NULL;    if (type == TIMER_Q_TYPE_CALL_DEL)    return;  EVNT__COPY_TV(tv);  /* find out time elapsed */  diff = timer_q_timeval_udiff_msecs(tv, &evnt->mtime);  if (diff < evnt->msecs_tm_mtime)    diff = evnt->msecs_tm_mtime - diff; /* seconds left until timeout */  else  {    vlg_dbg2(vlg, "timeout = %p[$<sa:%p>] (%lu, %lu)\n",             evnt, EVNT_SA(evnt), diff, evnt->msecs_tm_mtime);    if (!evnt_shutdown_w(evnt))    {      evnt_close(evnt);      return;    }    /* FIXME: linger close time configurable? */    EVNT__COPY_TV(&evnt->mtime);    diff = evnt->msecs_tm_mtime;  }    if (!(evnt->tm_o = evnt__timeout_mtime_make(evnt, tv, diff)))  {    errno = ENOMEM;    vlg_warn(vlg, "%s: %m\n", "timer reinit");    evnt_close(evnt);  }}