From 9c8b5f9177ca2c374db1dbe0f3098a9c182a3492 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 10 Oct 2009 15:47:43 +0200 Subject: [PATCH] mpdclient: set all idle events on disconnect After a disconnect, all subsystems have to consider the "new data" (i.e. nothing). --- src/mpdclient.c | 5 +++++ src/screen.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/mpdclient.c b/src/mpdclient.c index a96dead..d000df1 100644 --- a/src/mpdclient.c +++ b/src/mpdclient.c @@ -134,6 +134,11 @@ mpdclient_disconnect(struct mpdclient *c) if (c->song) c->song = NULL; + + /* everything has changed after a disconnect */ + c->idle |= MPD_IDLE_DATABASE|MPD_IDLE_STORED_PLAYLIST| + MPD_IDLE_QUEUE|MPD_IDLE_PLAYER|MPD_IDLE_MIXER|MPD_IDLE_OUTPUT| + MPD_IDLE_OPTIONS|MPD_IDLE_UPDATE; } bool diff --git a/src/screen.c b/src/screen.c index c01c792..58cc492 100644 --- a/src/screen.c +++ b/src/screen.c @@ -426,7 +426,8 @@ screen_update(struct mpdclient *c) crossfade = mpd_status_get_crossfade(c->status); } - if ((c->events & MPD_IDLE_DATABASE) != 0 && was_connected) + if ((c->events & MPD_IDLE_DATABASE) != 0 && was_connected && + mpdclient_is_connected(c)) screen_status_printf(_("Database updated")); was_connected = mpdclient_is_connected(c); -- 2.30.2