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;