From 0d6d13425015d78606232874498327cabcb0e4e2 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Sat, 22 Nov 2025 14:22:11 -0500 Subject: Fixes and cleanup around synced gapless Signed-off-by: Andrew Opalach --- src/fruits/cmv/cmv.c | 34 ++++++++++++++++++++++------------ 1 file changed, 22 insertions(+), 12 deletions(-) (limited to 'src/fruits/cmv') diff --git a/src/fruits/cmv/cmv.c b/src/fruits/cmv/cmv.c index 1fce028..fe0fbd6 100644 --- a/src/fruits/cmv/cmv.c +++ b/src/fruits/cmv/cmv.c @@ -16,7 +16,9 @@ #include "../common.h" #if !defined CAMU_SINK_ONLY && !defined NAUNET_ON_WINDOWS -static str CMV_UNIX_PATH = al_str_c("/tmp/cmv_sock"); +// https://unix.stackexchange.com/a/16884 +#define PID_MAX_STR 7 // 0x400000 (2^22). +static str CMV_UNIX_PATH = al_str_c("/tmp/cmv_sock_"); #endif struct cmv { @@ -66,7 +68,7 @@ static bool parse_exe_name_params(str *exe_name, str *addr, struct lia_prefs *pr index = al_str_find(&sub, '-'); if (index == AL_STR_NO_POS) goto def; - *addr = al_str_substr(&sub, 0, index); + al_str_clone(addr, &al_str_substr(&sub, 0, index)); for (;;) { sub = al_str_substr(&sub, index + 1, sub.length); @@ -118,12 +120,10 @@ s32 window_system_main(u32 argc, str *argv, void *extra) camu_ff_common_init(); #endif - str home = al_str_null(); char *home_env = getenv("HOME"); if (home_env) { - al_str_from(&home, home_env); str color_palette; - al_str_clone(&color_palette, &home); + al_str_from(&color_palette, home_env); al_str_cat(&color_palette, &al_str_c("/.config/colors.json")); camu_color_palette_init(&color_palette); al_str_free(&color_palette); @@ -145,16 +145,22 @@ s32 window_system_main(u32 argc, str *argv, void *extra) #ifndef CAMU_SINK_ONLY if (local) { #ifdef NAUNET_ON_WINDOWS - type = NNWT_SOCKET_TCP; addr = CAMU_LOCALHOST; + type = NNWT_SOCKET_TCP;; + al_str_clone(&addr, &CAMU_LOCALHOST); #else - type = NNWT_SOCKET_UNIX; addr = CMV_UNIX_PATH; + type = NNWT_SOCKET_UNIX; + al_str_clone(&addr, &CMV_UNIX_PATH); + char pid_str[PID_MAX_STR]; + al_snprintf(pid_str, PID_MAX_STR, "%x", getpid()); + al_str_cat(&addr, &al_str_cs(pid_str)); #endif } else { type = CAMU_TEST_TYPE; - addr = CAMU_TEST_ADDR; + al_str_clone(&addr, &CAMU_TEST_ADDR); } #else - type = NNWT_SOCKET_TCP; addr = CAMU_TEST_ADDR; + type = NNWT_SOCKET_TCP; + al_str_clone(&addr, &CAMU_TEST_ADDR); #endif } else { type = NNWT_SOCKET_TCP; @@ -189,6 +195,8 @@ s32 window_system_main(u32 argc, str *argv, void *extra) return EXIT_FAILURE; } + al_str_free(&addr); + #ifndef CAMU_SINK_ONLY if (local) { for (u32 i = 1; i < argc; i++) { @@ -214,7 +222,6 @@ s32 window_system_main(u32 argc, str *argv, void *extra) camu_server_free(&c.server); #endif nn_event_loop_destroy(&c.loop); - al_str_free(&home); return EXIT_SUCCESS; } @@ -238,7 +245,10 @@ s32 wmain(s32 argc, wchar_t **argv) s32 main(s32 argc, char *argv[]) #endif { - if (!nn_common_init("cmv_main")) return EXIT_FAILURE; + if (!nn_common_init("cmv_main")) { + return EXIT_FAILURE; + } + if (!stl_global_init(false)) { nn_common_close(); return EXIT_FAILURE; @@ -252,7 +262,7 @@ s32 main(s32 argc, char *argv[]) for (s32 i = 0; i < argc; i++) { str arg; #ifdef NAUNET_ON_WINDOWS - if (!al_str_from_wstr(&arg, &al_wstr_cr(argv[i]))) { + if (!al_str_from_wstr(&arg, &al_wstr_cr(argv[i]))) { // This is so broken. log_error("Failed to convert argument #%i from a wide string.", i); continue; } -- cgit v1.2.3-101-g0448