#include <qobject.h>
#include <qtimer.h>
#endif
+#include <avahi-common/timeval.h>
#include "qt-watch.h"
class AvahiWatch : public QObject
m_callback(callback), m_userdata(userdata)
{
connect(&m_timer, SIGNAL(timeout()), this, SLOT(timeout()));
+#ifdef QT4
+ m_timer.setSingleShot(true);
+#endif
update(tv);
}
{
m_timer.stop();
if (tv) {
- struct timeval now;
- gettimeofday(&now, 0);
- m_timer.start((tv->tv_sec-now.tv_sec)*1000+(tv->tv_usec-now.tv_usec)/1000);
+ AvahiUsec u = avahi_age(tv)/1000;
+#ifdef QT4
+ m_timer.start( (u>0) ? 0 : -u);
+#else
+ m_timer.start( (u>0) ? 0 : -u,true);
+#endif
}
}
delete t;
}
-static AvahiPoll qt_poll;
-
const AvahiPoll* avahi_qt_poll_get(void)
{
- qt_poll.userdata=0;
- qt_poll.watch_new = q_watch_new;
- qt_poll.watch_free = q_watch_free;
- qt_poll.watch_update = q_watch_update;
- qt_poll.watch_get_events = q_watch_get_events;
-
- qt_poll.timeout_new = q_timeout_new;
- qt_poll.timeout_free = q_timeout_free;
- qt_poll.timeout_update = q_timeout_update;
+ static const AvahiPoll qt_poll = {
+ NULL,
+ q_watch_new,
+ q_watch_update,
+ q_watch_get_events,
+ q_watch_free,
+ q_timeout_new,
+ q_timeout_update,
+ q_timeout_free
+ };
+
return &qt_poll;
}