X-Git-Url: http://git.meshlink.io/?a=blobdiff_plain;f=avahi-qt%2Fqt-watch.cpp;h=dac9dcc7ea116d0328f219ca3be1b1bd619224b1;hb=e9f7d4faa2566d22ad1589438cdce51244a2ce4f;hp=c0b21402348722b742cbc74563fac4d444a214b0;hpb=4348780c482f8528a40d4b9bf1ebf8a911a7b416;p=catta diff --git a/avahi-qt/qt-watch.cpp b/avahi-qt/qt-watch.cpp index c0b2140..dac9dcc 100644 --- a/avahi-qt/qt-watch.cpp +++ b/avahi-qt/qt-watch.cpp @@ -1,5 +1,3 @@ -/* $Id$ */ - /*** This file is part of avahi. @@ -29,6 +27,7 @@ #include #include #endif +#include #include "qt-watch.h" class AvahiWatch : public QObject @@ -125,12 +124,11 @@ void AvahiTimeout::update(const struct timeval *tv) { m_timer.stop(); if (tv) { - struct timeval now; - gettimeofday(&now, 0); + AvahiUsec u = avahi_age(tv)/1000; #ifdef QT4 - m_timer.start((tv->tv_sec-now.tv_sec)*1000+(tv->tv_usec-now.tv_usec)/1000); + m_timer.start( (u>0) ? 0 : -u); #else - m_timer.start((tv->tv_sec-now.tv_sec)*1000+(tv->tv_usec-now.tv_usec)/1000,true); + m_timer.start( (u>0) ? 0 : -u,true); #endif } } @@ -177,19 +175,19 @@ static void q_timeout_free(AvahiTimeout *t) 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; }