a/src/mpdcli.cxx b/src/mpdcli.cxx
...
...
51
    if (!openconn()) {
51
    if (!openconn()) {
52
        return;
52
        return;
53
    }
53
    }
54
    m_have_addtagid = checkForCommand("addtagid");
54
    m_have_addtagid = checkForCommand("addtagid");
55
55
56
    m_ok = true;
57
    m_ok = updStatus();
58
59
    std::unique_lock<std::mutex>(g_configlock);
56
    std::unique_lock<std::mutex>(g_configlock);
60
    g_config->get("onstart", m_onstart);
57
    g_config->get("onstart", m_onstart);
61
    g_config->get("onplay", m_onplay);
58
    g_config->get("onplay", m_onplay);
62
    g_config->get("onstop", m_onstop);
59
    g_config->get("onstop", m_onstop);
63
    string scratch;
60
    string scratch;
...
...
69
    m_externalvolumecontrol = false;
66
    m_externalvolumecontrol = false;
70
    string value;
67
    string value;
71
    if (g_config->get("externalvolumecontrol", value)) {
68
    if (g_config->get("externalvolumecontrol", value)) {
72
        m_externalvolumecontrol = atoi(value.c_str()) != 0;
69
        m_externalvolumecontrol = atoi(value.c_str()) != 0;
73
    }
70
    }
71
72
    m_ok = true;
73
    m_ok = updStatus();
74
}
74
}
75
75
76
MPDCli::~MPDCli()
76
MPDCli::~MPDCli()
77
{
77
{
78
    if (m_conn) 
78
    if (m_conn) 
...
...
215
    m_stat.random = mpd_status_get_random(mpds);
215
    m_stat.random = mpd_status_get_random(mpds);
216
    m_stat.single = mpd_status_get_single(mpds);
216
    m_stat.single = mpd_status_get_single(mpds);
217
    m_stat.consume = mpd_status_get_consume(mpds);
217
    m_stat.consume = mpd_status_get_consume(mpds);
218
    m_stat.qlen = mpd_status_get_queue_length(mpds);
218
    m_stat.qlen = mpd_status_get_queue_length(mpds);
219
    m_stat.qvers = mpd_status_get_queue_version(mpds);
219
    m_stat.qvers = mpd_status_get_queue_version(mpds);
220
    m_stat.state = MpdStatus::MPDS_UNK;
220
221
221
    switch (mpd_status_get_state(mpds)) {
222
    switch (mpd_status_get_state(mpds)) {
222
    case MPD_STATE_STOP:
223
    case MPD_STATE_STOP:
223
        // Only execute onstop command if mpd was playing or paused
224
        // Only execute onstop command if mpd was playing or paused
224
        if (!m_onstop.empty() && (m_stat.state == MpdStatus::MPDS_PLAY ||
225
        if (!m_onstop.empty() && (m_stat.state == MpdStatus::MPDS_PLAY ||
...
...
229
        }
230
        }
230
        m_stat.state = MpdStatus::MPDS_STOP;
231
        m_stat.state = MpdStatus::MPDS_STOP;
231
        break;
232
        break;
232
    case MPD_STATE_PLAY:
233
    case MPD_STATE_PLAY:
233
        // Only execute onplay command if mpd was stopped
234
        // Only execute onplay command if mpd was stopped
234
        if (!m_onplay.empty() && m_stat.state == MpdStatus::MPDS_STOP) {
235
        if (!m_onplay.empty() && (m_stat.state == MpdStatus::MPDS_UNK ||
236
                                  m_stat.state == MpdStatus::MPDS_STOP)) {
235
            if (system(m_onplay.c_str())) {
237
            if (system(m_onplay.c_str())) {
236
                LOGERR("MPDCli::updStatus: " << m_onplay << " failed "<< endl);
238
                LOGERR("MPDCli::updStatus: " << m_onplay << " failed "<< endl);
237
            }
239
            }
238
        }
240
        }
239
        m_stat.state = MpdStatus::MPDS_PLAY;
241
        m_stat.state = MpdStatus::MPDS_PLAY;