summaryrefslogtreecommitdiff
path: root/src/lib/ecore_avahi
diff options
context:
space:
mode:
authorCedric Bail <cedric.bail@free.fr>2014-02-27 20:07:22 -0300
committerCedric Bail <cedric.bail@free.fr>2014-02-27 20:09:09 -0300
commitb955ea0b9e86c00ed4d4538aed0eea1536bcda27 (patch)
tree6cf9694a41eca3a470ea5c5707b67ba7b60a9df8 /src/lib/ecore_avahi
parentcbf6f94c807556e59007843e40ad8bb6c2021427 (diff)
ecore_avahi: fix timeout to be relative from now.
Diffstat (limited to 'src/lib/ecore_avahi')
-rw-r--r--src/lib/ecore_avahi/ecore_avahi.c17
1 files changed, 13 insertions, 4 deletions
diff --git a/src/lib/ecore_avahi/ecore_avahi.c b/src/lib/ecore_avahi/ecore_avahi.c
index 93c5301..8957d0a 100644
--- a/src/lib/ecore_avahi/ecore_avahi.c
+++ b/src/lib/ecore_avahi/ecore_avahi.c
@@ -44,7 +44,7 @@ _ecore_avahi_events2ecore(AvahiWatchEvent events)
44{ 44{
45 return (events & AVAHI_WATCH_IN ? ECORE_FD_READ : 0) | 45 return (events & AVAHI_WATCH_IN ? ECORE_FD_READ : 0) |
46 (events & AVAHI_WATCH_OUT ? ECORE_FD_WRITE : 0) | 46 (events & AVAHI_WATCH_OUT ? ECORE_FD_WRITE : 0) |
47 (events & AVAHI_WATCH_ERR ? ECORE_FD_ERROR : 0); 47 ECORE_FD_ERROR;
48} 48}
49 49
50static Eina_Bool 50static Eina_Bool
@@ -119,8 +119,17 @@ _ecore_avahi_watch_get_events(AvahiWatch *w)
119static double 119static double
120_ecore_avahi_timeval2double(const struct timeval *tv) 120_ecore_avahi_timeval2double(const struct timeval *tv)
121{ 121{
122 struct timeval now;
123 double tm;
124
122 if (!tv) return 3600; 125 if (!tv) return 3600;
123 return tv->tv_sec + (double) tv->tv_usec / 1000000; 126
127 gettimeofday(&now, NULL);
128
129 tm = tv->tv_sec - now.tv_sec + (double) (tv->tv_usec - now.tv_usec) / 1000000;
130 if (tm < 0) tm = 0.001;
131
132 return tm;
124} 133}
125 134
126static Eina_Bool 135static Eina_Bool
@@ -144,8 +153,8 @@ _ecore_avahi_timeout_new(const AvahiPoll *api, const struct timeval *tv,
144 ea = api->userdata; 153 ea = api->userdata;
145 timeout = calloc(1, sizeof (Ecore_Avahi_Timeout)); 154 timeout = calloc(1, sizeof (Ecore_Avahi_Timeout));
146 if (!timeout) return NULL; 155 if (!timeout) return NULL;
147 156 timeout->timer = ecore_timer_add(_ecore_avahi_timeval2double(tv),
148 timeout->timer = ecore_timer_add(_ecore_avahi_timeval2double(tv), _ecore_avahi_timeout_cb, timeout); 157 _ecore_avahi_timeout_cb, timeout);
149 if (!tv) ecore_timer_freeze(timeout->timer); 158 if (!tv) ecore_timer_freeze(timeout->timer);
150 timeout->callback = callback; 159 timeout->callback = callback;
151 timeout->callback_data = userdata; 160 timeout->callback_data = userdata;