X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Futil%2Ftimer.c;h=48529dc3f22b8731aadfb70b86c9efe8311930c6;hb=b4a0127130213dba32519e1b478257228aa4dc10;hp=59064dd1eddfde834fb9354be6c8daa46eb02d98;hpb=4ca207e8f31e8b608faf74eead20dd28eb91fc89;p=chaz%2Ftint2 diff --git a/src/util/timer.c b/src/util/timer.c index 59064dd..48529dc 100644 --- a/src/util/timer.c +++ b/src/util/timer.c @@ -18,6 +18,7 @@ #include #include #include +#include #include "timer.h" @@ -25,7 +26,7 @@ GSList* timer_list = 0; int install_timer(int value_sec, int value_nsec, int interval_sec, int interval_nsec, void (*_callback)()) { - if ( value_sec < 0 || interval_sec < 0 ) + if ( value_sec < 0 || interval_sec < 0 || _callback == 0 ) return -1; int timer_fd; @@ -38,6 +39,11 @@ int install_timer(int value_sec, int value_nsec, int interval_sec, int interval_ t->id=timer_fd; t->_callback = _callback; timer_list = g_slist_prepend(timer_list, t); + + int flags = fcntl( timer_fd, F_GETFL, 0 ); + if( flags != -1 ) + fcntl( timer_fd, F_SETFL, flags | O_NONBLOCK ); + return timer_fd; }