aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-08-10 10:57:00 +0200
committerMax Kellermann <max@duempel.org>2013-08-10 11:52:31 +0200
commitbe0c8495cdb60847279ffbb6b6e1c1efed607e98 (patch)
tree8bac73de8f2cad0695ff819326e073f23c40e424
parentcbd0709d1cf8f7a33e57b3d1bb84d7fd527e2ff2 (diff)
downloadmpd-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.hxx7
-rw-r--r--src/input/CurlInputPlugin.cxx13
-rw-r--r--src/mixer/AlsaMixerPlugin.cxx8
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