diff options
Diffstat (limited to 'src/fruits')
| -rw-r--r-- | src/fruits/cmsrv/cmsrv.c | 51 |
1 files changed, 37 insertions, 14 deletions
diff --git a/src/fruits/cmsrv/cmsrv.c b/src/fruits/cmsrv/cmsrv.c index 80d7c03..6f00a05 100644 --- a/src/fruits/cmsrv/cmsrv.c +++ b/src/fruits/cmsrv/cmsrv.c @@ -1,8 +1,9 @@ -#define CAMU_LOCAL_SOCKET +#define CMSRV_LOCAL_SOCKET +#define CMSRV_USE_UI #include <al/log.h> #include <nnwt/common.h> -#ifdef CAMU_LOCAL_SOCKET +#ifdef CMSRV_LOCAL_SOCKET #include <nnwt/line_processor.h> #endif #include <nnwt/timer.h> @@ -20,18 +21,20 @@ struct cmsrv { struct nn_event_loop loop; struct nn_signal quit_signal; struct camu_server server; -#ifdef CAMU_LOCAL_SOCKET +#ifdef CMSRV_LOCAL_SOCKET struct { struct nn_socket sock; struct nn_line_processor cli; } local; #endif +#ifdef CMSRV_USE_UI struct cmsrv_ui ui; struct nn_poll input_poll; struct nn_timer render_timer; +#endif }; -#ifdef CAMU_LOCAL_SOCKET +#ifdef CMSRV_LOCAL_SOCKET static u8 server_line_callback(void *userdata, str *line) { struct cmsrv *s = (struct cmsrv *)userdata; @@ -73,6 +76,7 @@ static u8 server_line_callback(void *userdata, str *line) } #endif +#ifdef CMSRV_USE_UI static void render_timer_callback(void *userdata, struct nn_timer *timer) { struct cmsrv *s = (struct cmsrv *)userdata; @@ -107,12 +111,6 @@ static void input_poll_callback(void *userdata, s32 revents) } } -static void quit_signal_callback(void *userdata) -{ - struct cmsrv *s = (struct cmsrv *)userdata; - nn_event_loop_break_one(&s->loop); -} - static s32 log_callback(void *userdata, u8 level, char *message) { struct cmsrv *s = (struct cmsrv *)userdata; @@ -120,6 +118,23 @@ static s32 log_callback(void *userdata, u8 level, char *message) cmsrv_ui_push_message(&s->ui, message); return al_strlen(message); } +#endif + +static void server_meta_callback(void *userdata, u8 op, struct lia_list *list, struct lia_list_entry *entry) +{ + struct cmsrv *s = (struct cmsrv *)userdata; + (void)s; + (void)list; + if (op == LIANA_META_PLAYING) { + al_log_info("cmsrv", "now playing: %ls.", entry->name.data); + } +} + +static void quit_signal_callback(void *userdata) +{ + struct cmsrv *s = (struct cmsrv *)userdata; + nn_event_loop_break_one(&s->loop); +} static struct cmsrv s = { 0 }; @@ -137,12 +152,14 @@ s32 wmain(s32 argc, wchar_t **argv) { (void)argc; (void)argv; - if (!nn_common_init() || !cmsrv_ui_init(&s.ui, &s.server)) return EXIT_FAILURE; + if (!nn_common_init()) return EXIT_FAILURE; +#ifdef CMSRV_USE_UI + if (!cmsrv_ui_init(&s.ui, &s.server)) return EXIT_FAILURE; + al_set_print(log_callback, &s); +#endif signal(SIGINT, sigint_handler); - al_set_print(log_callback, &s); - #ifdef CAMU_HAVE_FFMPEG camu_ff_set_default_log_callback(); #endif @@ -153,11 +170,13 @@ s32 wmain(s32 argc, wchar_t **argv) nn_signal_start(&s.quit_signal); camu_server_init(&s.server, &s.loop); + s.server.meta_callback = server_meta_callback; + s.server.userdata = &s; if (!camu_server_listen(&s.server, CAMU_TEST_TYPE, CAMU_TEST_ADDR, CAMU_PORT)) { return EXIT_FAILURE; } -#ifdef CAMU_LOCAL_SOCKET +#ifdef CMSRV_LOCAL_SOCKET s.local.sock.type = NNWT_SOCKET_UNIX; nn_socket_init(&s.local.sock, NNWT_SOCKET_NONBLOCKING); s.local.cli.callback = server_line_callback; @@ -169,6 +188,7 @@ s32 wmain(s32 argc, wchar_t **argv) } #endif +#ifdef CMSRV_USE_UI nn_poll_init(&s.input_poll, input_poll_callback, &s); nn_poll_set(&s.input_poll, cmsrv_ui_get_input_fd(&s.ui), NNWT_POLL_READ); nn_poll_start(&s.input_poll, &s.loop); @@ -176,10 +196,13 @@ s32 wmain(s32 argc, wchar_t **argv) nn_timer_init(&s.render_timer, &s.loop, render_timer_callback, &s); nn_timer_set_repeat(&s.render_timer, NNWT_TS_FROM_USEC(100000)); nn_timer_again(&s.render_timer); +#endif nn_event_loop_run(&s.loop); +#ifdef CMSRV_USE_UI cmsrv_ui_close(&s.ui); +#endif #ifdef CAMU_HAVE_FFMPEG camu_ff_free_default_log_callback(); |