diff options
| author | 2025-11-30 14:32:51 -0500 | |
|---|---|---|
| committer | 2025-11-30 14:32:51 -0500 | |
| commit | c8412bbedae0fce38db96833732e8ce904721e4c (patch) | |
| tree | 4611046186c714513d042966ce97825df0fecf9e /src/fruits/cmsrv | |
| parent | 0d6d13425015d78606232874498327cabcb0e4e2 (diff) | |
| download | camu-c8412bbedae0fce38db96833732e8ce904721e4c.tar.gz camu-c8412bbedae0fce38db96833732e8ce904721e4c.tar.bz2 camu-c8412bbedae0fce38db96833732e8ce904721e4c.zip | |
Build cleanup and fixes from sink testing
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/fruits/cmsrv')
| -rw-r--r-- | src/fruits/cmsrv/cmsrv.c | 18 | ||||
| -rw-r--r-- | src/fruits/cmsrv/meson.build | 8 | ||||
| -rw-r--r-- | src/fruits/cmsrv/ui.c | 6 | ||||
| -rw-r--r-- | src/fruits/cmsrv/ui.h | 1 |
4 files changed, 22 insertions, 11 deletions
diff --git a/src/fruits/cmsrv/cmsrv.c b/src/fruits/cmsrv/cmsrv.c index ef66be8..babd5ef 100644 --- a/src/fruits/cmsrv/cmsrv.c +++ b/src/fruits/cmsrv/cmsrv.c @@ -1,8 +1,7 @@ -#define CMSRV_LOCAL_SOCKET -#define CMSRV_USE_UI - +#define AL_LOG_SECTION "cmsrv" #include <al/log.h> #include <nnwt/common.h> +#define CMSRV_LOCAL_SOCKET #ifdef CMSRV_LOCAL_SOCKET #include <nnwt/line_processor.h> #endif @@ -15,9 +14,9 @@ #include "../../cache/handlers/cdio.h" #endif -#include "../common.h" - +#ifdef CMSRV_USE_UI #include "ui.h" +#endif struct cmsrv { struct nn_event_loop loop; @@ -186,8 +185,13 @@ s32 main(s32 argc, char *argv[]) nn_signal_start(&s.quit_signal); signal(SIGINT, sigint_handler); + str addr = al_str_c("127.0.0.1"); + char *CMSRV_IP = getenv("CMSRV_IP"); + if (CMSRV_IP) addr = al_str_cr(CMSRV_IP); + log_info("Serving from %.*s.", al_str_x(&addr)); + camu_server_init(&s.server, &s.loop); - if (!camu_server_listen(&s.server, CAMU_TEST_TYPE, &CAMU_TEST_ADDR, CAMU_PORT)) { + if (!camu_server_listen(&s.server, NNWT_SOCKET_TCP, &addr, CAMU_PORT)) { return EXIT_FAILURE; } @@ -198,7 +202,7 @@ s32 main(s32 argc, char *argv[]) s.local.cli.userdata = &s; nn_line_processor_init(&s.local.cli, &al_str_c("\n")); nn_line_processor_open_socket(&s.local.cli, &s.local.sock); - if (nn_socket_bind(&s.local.sock, &CAMU_TEST_CONTROL_PATH, 0) && nn_socket_listen(&s.local.sock)) { + if (nn_socket_bind(&s.local.sock, &al_str_c("/tmp/camu_control"), 0) && nn_socket_listen(&s.local.sock)) { nn_line_processor_run(&s.local.cli, &s.loop); } #endif diff --git a/src/fruits/cmsrv/meson.build b/src/fruits/cmsrv/meson.build index b12d00d..bfeabe0 100644 --- a/src/fruits/cmsrv/meson.build +++ b/src/fruits/cmsrv/meson.build @@ -2,14 +2,14 @@ cmsrv_src = ['cmsrv.c'] cmsrv_deps = [common_deps, server] cmsrv_args = [] -use_tui = true -if use_tui +if use_tuis cmsrv_src += ['ui.c'] cmsrv_deps += [notcurses_core] + cmsrv_args += ['-DCMSRV_USE_UI'] endif if is_windows and not is_msvc - cmsrv_args += ['-static', '-static-libgcc', '-static-libstdc++', '-municode', '-mwindows'] + cmsrv_args += ['-static', '-static-libgcc', '-static-libstdc++', '-mwindows', '-municode'] endif -executable('cmsrv', cmsrv_src, dependencies: cmsrv_deps, link_args: cmsrv_args, install: true) +executable('cmsrv', cmsrv_src, dependencies: cmsrv_deps, c_args: cmsrv_args, link_args: cmsrv_args, install: true) diff --git a/src/fruits/cmsrv/ui.c b/src/fruits/cmsrv/ui.c index d96c09d..afbee58 100644 --- a/src/fruits/cmsrv/ui.c +++ b/src/fruits/cmsrv/ui.c @@ -29,6 +29,7 @@ bool cmsrv_ui_init(struct cmsrv_ui *ui, struct camu_server *server) ncplane_set_userptr(stdplane, ui); ui->pending_layout = true; al_array_init(ui->log.messages); + nn_mutex_init(&ui->log.lock); return true; } @@ -51,7 +52,9 @@ void cmsrv_ui_set_pane(struct cmsrv_ui *ui, u8 pane) void cmsrv_ui_push_message(struct cmsrv_ui *ui, char *message) { + nn_mutex_lock(&ui->log.lock); al_array_push(ui->log.messages, message); + nn_mutex_unlock(&ui->log.lock); } static void layout_log(struct cmsrv_ui *ui, struct ncplane *parent) @@ -80,6 +83,7 @@ static void render_log(struct cmsrv_ui *ui) u32 max_width = ncplane_dim_x(n) - 2; u32 max_height = ncplane_dim_y(n) - 2; + nn_mutex_lock(&ui->log.lock); u32 size = ui->log.messages.count; if (size > max_height) { u32 index = size - max_height; @@ -97,6 +101,7 @@ static void render_log(struct cmsrv_ui *ui) // messages will have wide characters. ncplane_putstr_yx(n, y, x, al_array_at(ui->log.messages, i)); } + nn_mutex_unlock(&ui->log.lock); u64 c = 0; ncchannels_set_fg_default(&c); @@ -251,4 +256,5 @@ void cmsrv_ui_close(struct cmsrv_ui *ui) al_free(message); } al_array_free(ui->log.messages); + nn_mutex_destroy(&ui->log.lock); } diff --git a/src/fruits/cmsrv/ui.h b/src/fruits/cmsrv/ui.h index ebf7c1a..3615d3b 100644 --- a/src/fruits/cmsrv/ui.h +++ b/src/fruits/cmsrv/ui.h @@ -19,6 +19,7 @@ struct cmsrv_ui { struct { struct ncplane *n; array(char *) messages; + struct nn_mutex lock; } log; struct { struct ncplane *n; |