]> git.meshlink.io Git - catta/commitdiff
Fixed get_events() semantic, rename create_qt_poll to avahi_qt_poll_get, use static...
authorJakub Stachowski <qbast@go2.pl>
Mon, 29 Aug 2005 21:21:27 +0000 (21:21 +0000)
committerJakub Stachowski <qbast@go2.pl>
Mon, 29 Aug 2005 21:21:27 +0000 (21:21 +0000)
for returned AvahiPoll struct

git-svn-id: file:///home/lennart/svn/public/avahi/trunk@494 941a03a8-eaeb-0310-b9a0-b1bbd8fe43fe

avahi-qt/qt-watch.cpp
avahi-qt/qt-watch.h

index fe8f2c30f7380362d9e02d8fd4eaf115427668c5..407a9055a972c8f072d17202f404e62426a62e20 100644 (file)
@@ -35,7 +35,7 @@ class AvahiWatch : public QObject
 public:
     AvahiWatch(int fd, AvahiWatchEvent event, AvahiWatchCallback callback, void* userdata);
     ~AvahiWatch() {}
-    AvahiWatchEvent getEvents() const { return m_lastEvent; }
+    AvahiWatchEvent getEvents() const { return m_incallback ? m_lastEvent : (AvahiWatchEvent)0; }
     void setWatchedEvents(AvahiWatchEvent event);
 
 private slots:
@@ -50,6 +50,7 @@ private:
     AvahiWatchEvent m_lastEvent;
     int m_fd;
     void* m_userdata;
+    bool m_incallback;
 };
 
 class AvahiTimeout : public QObject 
@@ -73,7 +74,7 @@ private:
 
 
 AvahiWatch::AvahiWatch(int fd, AvahiWatchEvent event, AvahiWatchCallback callback, void* userdata) : 
-    m_in(0), m_out(0),  m_callback(callback), m_fd(fd), m_userdata(userdata)
+    m_in(0), m_out(0),  m_callback(callback), m_fd(fd), m_userdata(userdata), m_incallback(false)
 {
     setWatchedEvents(event);
 }
@@ -81,13 +82,17 @@ AvahiWatch::AvahiWatch(int fd, AvahiWatchEvent event, AvahiWatchCallback callbac
 void AvahiWatch::gotIn()
 {
     m_lastEvent = AVAHI_WATCH_IN;
+    m_incallback=true;
     m_callback(this,m_fd,m_lastEvent,m_userdata);
+    m_incallback=false;
 }
 
 void AvahiWatch::gotOut()
 {
     m_lastEvent = AVAHI_WATCH_IN;
+    m_incallback=true;
     m_callback(this,m_fd,m_lastEvent,m_userdata);
+    m_incallback=false;
 }
 
 void AvahiWatch::setWatchedEvents(AvahiWatchEvent event) 
@@ -163,18 +168,20 @@ static void q_timeout_free(AvahiTimeout *t)
     delete t;
 }
 
+static AvahiPoll qt_poll;
 
-void create_qt_poll(AvahiPoll *api
+const AvahiPoll* avahi_qt_poll_get(
 {
-    api->userdata=0;
-    api->watch_new = q_watch_new;
-    api->watch_free = q_watch_free;
-    api->watch_update = q_watch_update;
-    api->watch_get_events = q_watch_get_events;
+    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;
     
-    api->timeout_new = q_timeout_new;
-    api->timeout_free = q_timeout_free;
-    api->timeout_update = q_timeout_update;
+    qt_poll.timeout_new = q_timeout_new;
+    qt_poll.timeout_free = q_timeout_free;
+    qt_poll.timeout_update = q_timeout_update;
+    return &qt_poll;
 }
 
 #include "qt-watch.moc"
index b49b45da289f32a53640085d519a222856d544ae..05b5010c7e7c7709cde64fcc5e9202be9840dc35 100644 (file)
@@ -29,7 +29,7 @@ AVAHI_C_DECL_BEGIN
 /**
 Setup abstract poll structure for integration with Qt main loop  */
 
-void create_qt_poll(AvahiPoll* poll);
+const AvahiPoll* avahi_qt_poll_get();
 
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 AVAHI_C_DECL_END