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