diff options
author | Max Kellermann <max@duempel.org> | 2013-08-10 10:57:00 +0200 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2013-08-10 11:52:31 +0200 |
commit | be0c8495cdb60847279ffbb6b6e1c1efed607e98 (patch) | |
tree | 8bac73de8f2cad0695ff819326e073f23c40e424 | |
parent | cbd0709d1cf8f7a33e57b3d1bb84d7fd527e2ff2 (diff) | |
download | mpd-be0c8495cdb60847279ffbb6b6e1c1efed607e98.tar.gz mpd-be0c8495cdb60847279ffbb6b6e1c1efed607e98.tar.xz mpd-be0c8495cdb60847279ffbb6b6e1c1efed607e98.zip |
event/MultiSocketMonitor: PrepareSockets() returns timeout
Simplify the API, don't use GLib specific integer type.
-rw-r--r-- | src/event/MultiSocketMonitor.hxx | 7 | ||||
-rw-r--r-- | src/input/CurlInputPlugin.cxx | 13 | ||||
-rw-r--r-- | src/mixer/AlsaMixerPlugin.cxx | 8 |
3 files changed, 17 insertions, 11 deletions
diff --git a/src/event/MultiSocketMonitor.hxx b/src/event/MultiSocketMonitor.hxx index 781fdeca6..50be18070 100644 --- a/src/event/MultiSocketMonitor.hxx +++ b/src/event/MultiSocketMonitor.hxx @@ -101,7 +101,10 @@ public: } protected: - virtual void PrepareSockets(gcc_unused gint *timeout_r) {} + /** + * @return timeout [ms] or -1 for no timeout + */ + virtual int PrepareSockets() = 0; virtual bool CheckSockets() const { return false; } virtual void DispatchSockets() = 0; @@ -114,7 +117,7 @@ public: private: bool Prepare(gint *timeout_r) { - PrepareSockets(timeout_r); + *timeout_r = PrepareSockets(); return false; } diff --git a/src/input/CurlInputPlugin.cxx b/src/input/CurlInputPlugin.cxx index 8e29e47c7..56a42709a 100644 --- a/src/input/CurlInputPlugin.cxx +++ b/src/input/CurlInputPlugin.cxx @@ -204,7 +204,7 @@ public: private: void UpdateSockets(); - virtual void PrepareSockets(gcc_unused gint *timeout_r) override; + virtual int PrepareSockets() override; virtual bool CheckSockets() const override; virtual void DispatchSockets() override; }; @@ -536,8 +536,8 @@ input_curl_perform(void) return true; } -void -CurlSockets::PrepareSockets(gint *timeout_r) +int +CurlSockets::PrepareSockets() { UpdateSockets(); @@ -556,12 +556,13 @@ CurlSockets::PrepareSockets(gint *timeout_r) Let's use a lower limit of 10ms. */ timeout2 = 10; - *timeout_r = timeout2; - have_timeout = timeout2 >= 0; - } else + return timeout2; + } else { g_warning("curl_multi_timeout() failed: %s\n", curl_multi_strerror(mcode)); + return -1; + } } bool diff --git a/src/mixer/AlsaMixerPlugin.cxx b/src/mixer/AlsaMixerPlugin.cxx index 5ab19a8d6..5191826c5 100644 --- a/src/mixer/AlsaMixerPlugin.cxx +++ b/src/mixer/AlsaMixerPlugin.cxx @@ -44,7 +44,7 @@ public: :MultiSocketMonitor(_loop), mixer(_mixer) {} private: - virtual void PrepareSockets(gcc_unused gint *timeout_r) override; + virtual int PrepareSockets() override; virtual void DispatchSockets() override; }; @@ -83,8 +83,8 @@ alsa_mixer_quark(void) return g_quark_from_static_string("alsa_mixer"); } -void -AlsaMixerMonitor::PrepareSockets(gcc_unused gint *timeout_r) +int +AlsaMixerMonitor::PrepareSockets() { int count = snd_mixer_poll_descriptors_count(mixer); if (count < 0) @@ -113,6 +113,8 @@ AlsaMixerMonitor::PrepareSockets(gcc_unused gint *timeout_r) for (auto i = pfds; i != end; ++i) if (i->events != 0) AddSocket(i->fd, i->events); + + return -1; } void |