diff --git a/src/screen_queue.c b/src/screen_queue.c
index d98445ded49bc0a1a6b3f8e2406e191dcd69dc27..7bb30aefd79973a292d74c63a5739fd97ae3f763 100644 (file)
--- a/src/screen_queue.c
+++ b/src/screen_queue.c
#define MAX_SONG_LENGTH 512
#ifndef NCMPC_MINI
-typedef struct
-{
- GList **list;
- GList **dir_list;
- struct mpdclient *c;
-} completion_callback_data_t;
-
static struct hscroll hscroll;
#endif
static struct list_window *lw;
static guint timer_hide_cursor_id;
+static struct queue_screen_data {
+ unsigned last_connection_id;
+ char *connection_name;
+} queue_screen;
+
static void
screen_queue_paint(void);
*dir_list = g_list_append(*dir_list, g_strdup(dir));
}
+struct completion_callback_data {
+ GList **list;
+ GList **dir_list;
+ struct mpdclient *c;
+};
+
static void add_pre_completion_cb(GCompletion *gcmp, gchar *line, void *data)
{
- completion_callback_data_t *tmp = (completion_callback_data_t *)data;
+ struct completion_callback_data *tmp = data;
GList **dir_list = tmp->dir_list;
GList **list = tmp->list;
struct mpdclient *c = tmp->c;
static void add_post_completion_cb(GCompletion *gcmp, gchar *line,
GList *items, void *data)
{
- completion_callback_data_t *tmp = (completion_callback_data_t *)data;
+ struct completion_callback_data *tmp = data;
GList **dir_list = tmp->dir_list;
GList **list = tmp->list;
struct mpdclient *c = tmp->c;
GList *list = NULL;
GList *dir_list = NULL;
- completion_callback_data_t data = {
+ struct completion_callback_data data = {
.list = &list,
.dir_list = &dir_list,
.c = c,
screen_queue_exit(void)
{
list_window_free(lw);
+ g_free(queue_screen.connection_name);
}
static const char *
screen_queue_title(char *str, size_t size)
{
- if (options.host == NULL)
- return _("Queue");
-
- g_snprintf(str, size, _("Queue on %s"), options.host);
+ g_snprintf(str, size, _("Queue on %s"), queue_screen.connection_name);
return str;
}
static void
screen_queue_update(struct mpdclient *c)
{
+ if (c->connection_id != queue_screen.last_connection_id) {
+ queue_screen.last_connection_id = c->connection_id;
+ g_free(queue_screen.connection_name);
+ queue_screen.connection_name = mpdclient_settings_name(c);
+ }
+
if (c->events & MPD_IDLE_QUEUE)
screen_queue_restore_selection();
else