diff --git a/src/screen_outputs.c b/src/screen_outputs.c
index 7ecc353cb88476a0331b5966ee58ca81d382caff..c40f470997e15c7d3bb74bb782358c340e229d97 100644 (file)
--- a/src/screen_outputs.c
+++ b/src/screen_outputs.c
return -1;
}
- /* XXX reload */
+ c->events |= MPD_IDLE_OUTPUT;
screen_status_printf(_("Output '%s' enabled"),
mpd_output_get_name(output));
return -1;
}
- /* XXX reload */
+ c->events |= MPD_IDLE_OUTPUT;
screen_status_printf(_("Output '%s' disabled"),
mpd_output_get_name(output));
}
- outputs_repaint();
-
return 0;
}
list_window_paint(lw, outputs_list_callback, NULL);
}
+static void
+screen_outputs_update(struct mpdclient *c)
+{
+ if (c->events & MPD_IDLE_OUTPUT) {
+ clear_outputs_list();
+ fill_outputs_list(c);
+ outputs_repaint();
+ }
+}
+
static bool
outputs_cmd(struct mpdclient *c, command_t cmd)
{
return true;
}
- if (cmd == CMD_PLAY) {
+ switch (cmd) {
+ case CMD_PLAY:
toggle_output(c, lw->selected);
return true;
+
+ case CMD_SCREEN_UPDATE:
+ clear_outputs_list();
+ fill_outputs_list(c);
+ outputs_repaint();
+ return true;
+
+ default:
+ break;
}
return false;
.close = outputs_close,
.resize = outputs_resize,
.paint = outputs_paint,
+ .update = screen_outputs_update,
.cmd = outputs_cmd,
.get_title = outputs_title,
};