|
a/src/mpdcli.cxx |
|
b/src/mpdcli.cxx |
|
... |
|
... |
30 |
using namespace UPnPP;
|
30 |
using namespace UPnPP;
|
31 |
|
31 |
|
32 |
#define M_CONN ((struct mpd_connection *)m_conn)
|
32 |
#define M_CONN ((struct mpd_connection *)m_conn)
|
33 |
|
33 |
|
34 |
MPDCli::MPDCli(const string& host, int port, const string& pass,
|
34 |
MPDCli::MPDCli(const string& host, int port, const string& pass,
|
35 |
const string& onstart, const string& onstop,
|
35 |
const string& onstart, const string& onplay,
|
36 |
const string& onvolumechange)
|
36 |
const string& onstop, const string& onvolumechange)
|
37 |
: m_conn(0), m_ok(false), m_premutevolume(0), m_cachedvolume(50),
|
37 |
: m_conn(0), m_ok(false), m_premutevolume(0), m_cachedvolume(50),
|
38 |
m_host(host), m_port(port), m_password(pass), m_onstart(onstart),
|
38 |
m_host(host), m_port(port), m_password(pass), m_onstart(onstart),
|
39 |
m_onstop(onstop), m_onvolumechange(onvolumechange), m_lastinsertid(-1),
|
39 |
m_onplay(onplay), m_onstop(onstop), m_onvolumechange(onvolumechange),
|
40 |
m_lastinsertpos(-1), m_lastinsertqvers(-1)
|
40 |
m_lastinsertid(-1), m_lastinsertpos(-1), m_lastinsertqvers(-1)
|
41 |
{
|
41 |
{
|
42 |
regcomp(&m_tpuexpr, "^[[:alpha:]]+://.+", REG_EXTENDED|REG_NOSUB);
|
42 |
regcomp(&m_tpuexpr, "^[[:alpha:]]+://.+", REG_EXTENDED|REG_NOSUB);
|
43 |
if (!openconn()) {
|
43 |
if (!openconn()) {
|
44 |
return;
|
44 |
return;
|
45 |
}
|
45 |
}
|
|
... |
|
... |
165 |
m_stat.qvers = mpd_status_get_queue_version(mpds);
|
165 |
m_stat.qvers = mpd_status_get_queue_version(mpds);
|
166 |
|
166 |
|
167 |
switch (mpd_status_get_state(mpds)) {
|
167 |
switch (mpd_status_get_state(mpds)) {
|
168 |
case MPD_STATE_STOP:
|
168 |
case MPD_STATE_STOP:
|
169 |
// Only execute onstop command if mpd was playing or paused
|
169 |
// Only execute onstop command if mpd was playing or paused
|
170 |
if (m_stat.state != MpdStatus::MPDS_STOP && !m_onstop.empty()) {
|
170 |
if (!m_onstop.empty() && (m_stat.state == MpdStatus::MPDS_PLAY ||
|
|
|
171 |
m_stat.state == MpdStatus::MPDS_PAUSE)) {
|
171 |
if (system(m_onstop.c_str())) {
|
172 |
if (system(m_onstop.c_str())) {
|
172 |
LOGERR("MPDCli::updStatus: " << m_onstop << " failed "<< endl);
|
173 |
LOGERR("MPDCli::updStatus: " << m_onstop << " failed "<< endl);
|
173 |
}
|
174 |
}
|
174 |
}
|
175 |
}
|
175 |
m_stat.state = MpdStatus::MPDS_STOP;
|
176 |
m_stat.state = MpdStatus::MPDS_STOP;
|
176 |
break;
|
177 |
break;
|
177 |
case MPD_STATE_PLAY: m_stat.state = MpdStatus::MPDS_PLAY;break;
|
178 |
case MPD_STATE_PLAY:
|
|
|
179 |
// Only execute onplay command if mpd was stopped
|
|
|
180 |
if (!m_onplay.empty() && m_stat.state == MpdStatus::MPDS_STOP) {
|
|
|
181 |
if (system(m_onplay.c_str())) {
|
|
|
182 |
LOGERR("MPDCli::updStatus: " << m_onplay << " failed "<< endl);
|
|
|
183 |
}
|
|
|
184 |
}
|
|
|
185 |
m_stat.state = MpdStatus::MPDS_PLAY;
|
|
|
186 |
break;
|
178 |
case MPD_STATE_PAUSE: m_stat.state = MpdStatus::MPDS_PAUSE;break;
|
187 |
case MPD_STATE_PAUSE: m_stat.state = MpdStatus::MPDS_PAUSE;break;
|
179 |
case MPD_STATE_UNKNOWN:
|
188 |
case MPD_STATE_UNKNOWN:
|
180 |
default:
|
189 |
default:
|
181 |
m_stat.state = MpdStatus::MPDS_UNK;
|
190 |
m_stat.state = MpdStatus::MPDS_UNK;
|
182 |
break;
|
191 |
break;
|