mirror of
https://codeberg.org/dnkl/yambar.git
synced 2025-04-24 12:55:41 +02:00
module/mpd: don’t overload enum mpd_state
We overloaded enum mpd_state to add an “offline” state. Don’t do this. We can detect the offline state by checking if our connection object is NULL. Closes #16
This commit is contained in:
parent
1262f1b3d1
commit
8a7e07af28
2 changed files with 16 additions and 17 deletions
|
@ -23,6 +23,8 @@
|
||||||
* Memory leak when a YAML parsing error was encountered.
|
* Memory leak when a YAML parsing error was encountered.
|
||||||
* clock: update every second when necessary
|
* clock: update every second when necessary
|
||||||
(https://codeberg.org/dnkl/yambar/issues/12).
|
(https://codeberg.org/dnkl/yambar/issues/12).
|
||||||
|
* mpd: fix compilation with clang
|
||||||
|
(https://codeberg.org/dnkl/yambar/issues/16).
|
||||||
|
|
||||||
|
|
||||||
### Security
|
### Security
|
||||||
|
|
|
@ -27,13 +27,6 @@
|
||||||
#include "../config-verify.h"
|
#include "../config-verify.h"
|
||||||
#include "../plugin.h"
|
#include "../plugin.h"
|
||||||
|
|
||||||
enum state {
|
|
||||||
STATE_OFFLINE = 1000,
|
|
||||||
STATE_STOP = MPD_STATE_STOP,
|
|
||||||
STATE_PAUSE = MPD_STATE_PAUSE,
|
|
||||||
STATE_PLAY = MPD_STATE_PLAY,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct private {
|
struct private {
|
||||||
char *host;
|
char *host;
|
||||||
uint16_t port;
|
uint16_t port;
|
||||||
|
@ -41,7 +34,7 @@ struct private {
|
||||||
|
|
||||||
struct mpd_connection *conn;
|
struct mpd_connection *conn;
|
||||||
|
|
||||||
enum state state;
|
enum mpd_state state;
|
||||||
bool repeat;
|
bool repeat;
|
||||||
bool random;
|
bool random;
|
||||||
bool consume;
|
bool consume;
|
||||||
|
@ -127,7 +120,7 @@ content(struct module *mod)
|
||||||
/* Calculate what 'elapsed' is now */
|
/* Calculate what 'elapsed' is now */
|
||||||
uint64_t elapsed = m->elapsed.value;
|
uint64_t elapsed = m->elapsed.value;
|
||||||
|
|
||||||
if (m->state == STATE_PLAY) {
|
if (m->state == MPD_STATE_PLAY) {
|
||||||
elapsed += timespec_diff_milli_seconds(&now, &m->elapsed.when);
|
elapsed += timespec_diff_milli_seconds(&now, &m->elapsed.when);
|
||||||
if (elapsed > m->duration) {
|
if (elapsed > m->duration) {
|
||||||
LOG_DBG(
|
LOG_DBG(
|
||||||
|
@ -148,15 +141,19 @@ content(struct module *mod)
|
||||||
|
|
||||||
/* State as string */
|
/* State as string */
|
||||||
const char *state_str = NULL;
|
const char *state_str = NULL;
|
||||||
switch (m->state) {
|
if (m->conn == NULL)
|
||||||
case STATE_OFFLINE: state_str = "offline"; break;
|
state_str = "offline";
|
||||||
case STATE_STOP: state_str = "stopped"; break;
|
else {
|
||||||
case STATE_PAUSE: state_str = "paused"; break;
|
switch (m->state) {
|
||||||
case STATE_PLAY: state_str = "playing"; break;
|
case MPD_STATE_UNKNOWN: state_str = "unknown"; break;
|
||||||
|
case MPD_STATE_STOP: state_str = "stopped"; break;
|
||||||
|
case MPD_STATE_PAUSE: state_str = "paused"; break;
|
||||||
|
case MPD_STATE_PLAY: state_str = "playing"; break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Tell particle to real-time track? */
|
/* Tell particle to real-time track? */
|
||||||
enum tag_realtime_unit realtime = m->state == STATE_PLAY
|
enum tag_realtime_unit realtime = m->state == MPD_STATE_PLAY
|
||||||
? TAG_REALTIME_MSECS : TAG_REALTIME_NONE;
|
? TAG_REALTIME_MSECS : TAG_REALTIME_NONE;
|
||||||
|
|
||||||
struct tag_set tags = {
|
struct tag_set tags = {
|
||||||
|
@ -384,7 +381,7 @@ run(struct module *mod)
|
||||||
free(m->album); m->album = NULL;
|
free(m->album); m->album = NULL;
|
||||||
free(m->artist); m->artist = NULL;
|
free(m->artist); m->artist = NULL;
|
||||||
free(m->title); m->title = NULL;
|
free(m->title); m->title = NULL;
|
||||||
m->state = STATE_OFFLINE;
|
m->state = MPD_STATE_UNKNOWN;
|
||||||
m->elapsed.value = m->duration = 0;
|
m->elapsed.value = m->duration = 0;
|
||||||
m->elapsed.when.tv_sec = m->elapsed.when.tv_nsec = 0;
|
m->elapsed.when.tv_sec = m->elapsed.when.tv_nsec = 0;
|
||||||
mtx_unlock(&mod->lock);
|
mtx_unlock(&mod->lock);
|
||||||
|
@ -579,7 +576,7 @@ mpd_new(const char *host, uint16_t port, struct particle *label)
|
||||||
priv->host = strdup(host);
|
priv->host = strdup(host);
|
||||||
priv->port = port;
|
priv->port = port;
|
||||||
priv->label = label;
|
priv->label = label;
|
||||||
priv->state = STATE_OFFLINE;
|
priv->state = MPD_STATE_UNKNOWN;
|
||||||
priv->refresh_abort_fd = -1;
|
priv->refresh_abort_fd = -1;
|
||||||
|
|
||||||
struct module *mod = module_common_new();
|
struct module *mod = module_common_new();
|
||||||
|
|
Loading…
Add table
Reference in a new issue