diff options
Diffstat (limited to 'src/fruits')
| -rw-r--r-- | src/fruits/cmsrv/cmsrv.c | 6 | ||||
| -rw-r--r-- | src/fruits/cmsrv/ui.c | 4 | ||||
| -rw-r--r-- | src/fruits/cmv/cmv.c | 45 |
3 files changed, 40 insertions, 15 deletions
diff --git a/src/fruits/cmsrv/cmsrv.c b/src/fruits/cmsrv/cmsrv.c index 00f5373..80d7c03 100644 --- a/src/fruits/cmsrv/cmsrv.c +++ b/src/fruits/cmsrv/cmsrv.c @@ -152,8 +152,10 @@ s32 wmain(s32 argc, wchar_t **argv) nn_signal_init(&s.quit_signal, &s.loop, quit_signal_callback, &s); nn_signal_start(&s.quit_signal); - if (!camu_server_init(&s.server, CAMU_TEST_TYPE, &s.loop)) return EXIT_FAILURE; - camu_server_listen(&s.server, CAMU_TEST_ADDR, CAMU_PORT); + camu_server_init(&s.server, &s.loop); + if (!camu_server_listen(&s.server, CAMU_TEST_TYPE, CAMU_TEST_ADDR, CAMU_PORT)) { + return EXIT_FAILURE; + } #ifdef CAMU_LOCAL_SOCKET s.local.sock.type = NNWT_SOCKET_UNIX; diff --git a/src/fruits/cmsrv/ui.c b/src/fruits/cmsrv/ui.c index 5d35380..ba1f8b3 100644 --- a/src/fruits/cmsrv/ui.c +++ b/src/fruits/cmsrv/ui.c @@ -135,7 +135,9 @@ static void render_lists(struct cmsrv_ui *ui) struct lia_list *list; al_array_foreach(ui->server->lists, i, list) { if (current_line++ >= max_height) break; - ncplane_putnstr_yx(n, i, 0, MIN(max_width, list->name.len), &al_str_at(&list->name, 0)); + for (u32 j = 0; j < MIN(max_width, list->name.len); j++) { + ncplane_putchar_yx(n, i, j, al_str_at(&list->name, j)); + } s32 index = MAX(list->current - (entries_per_list / 2), 0); s32 size = (s32)list->entries.size; s32 end = MIN(index + entries_per_list, size); diff --git a/src/fruits/cmv/cmv.c b/src/fruits/cmv/cmv.c index 635c25e..02beffb 100644 --- a/src/fruits/cmv/cmv.c +++ b/src/fruits/cmv/cmv.c @@ -27,6 +27,18 @@ struct cmv { }; #ifndef CAMU_SINK_ONLY +static void server_meta_callback(void *userdata, u8 op, struct lia_list *list, struct lia_list_entry *entry) +{ + struct cmv *c = (struct cmv *)userdata; + (void)c; + (void)list; + if (op == LIANA_META_PLAYING) { + al_log_info("cmv", "now playing: %ls.", entry->name.data); + } +} +#endif + +#ifndef CAMU_SINK_ONLY static void exit_callback(void *userdata, struct camu_desktop *desktop) { struct cmv *c = (struct cmv *)userdata; @@ -42,6 +54,7 @@ static nn_thread_result NNWT_THREADCALL event_loop_thread(void *userdata) return 0; } + static struct cmv c = { 0 }; static void sigint_handler(int signum) @@ -84,8 +97,16 @@ s32 wmain(s32 argc, wchar_t **argv) #else type = NNWT_SOCKET_TCP; addr = CAMU_LOCALHOST; #endif - if (!camu_server_init(&c.server, type, &c.loop)) failure(); - if (!camu_server_listen(&c.server, addr, CAMU_PORT)) failure(); + camu_server_init(&c.server, &c.loop); + c.server.meta_callback = server_meta_callback; + c.server.userdata = &c; +#ifdef CAMU_DIRECT_MODE + camu_server_bind_direct(&c.server); +#else + if (!camu_server_listen(&c.server, type, addr, CAMU_PORT)) { + failure(); + } +#endif } else { type = CAMU_TEST_TYPE; addr = CAMU_TEST_ADDR; @@ -94,6 +115,16 @@ s32 wmain(s32 argc, wchar_t **argv) type = NNWT_SOCKET_TCP; addr = CAMU_TEST_ADDR; #endif + if (!camu_desktop_init(&c.desktop, "cmv")) failure(); +#ifndef CAMU_SINK_ONLY + if (local) { + c.desktop.exit_callback = exit_callback; + c.desktop.userdata = &c; + c.desktop.sink.local_server = &c.server.data.server; + } +#endif + if (!camu_desktop_connect(&c.desktop, type, &c.loop, addr, CAMU_PORT)) failure(); + #ifndef CAMU_SINK_ONLY if (local) { for (s32 i = 1; i < argc; i++) { @@ -131,16 +162,6 @@ s32 wmain(s32 argc, wchar_t **argv) (void)argv; #endif - if (!camu_desktop_init(&c.desktop, "cmv")) failure(); -#ifndef CAMU_SINK_ONLY - if (local) { - c.desktop.exit_callback = exit_callback; - c.desktop.userdata = &c; - c.desktop.sink.local_server = &c.server.data.server; - } -#endif - if (!camu_desktop_connect(&c.desktop, type, &c.loop, addr, CAMU_PORT)) failure(); - struct nn_thread thread0; nn_thread_create(&thread0, event_loop_thread, &c); |