diff options
| author | 2025-11-22 14:22:11 -0500 | |
|---|---|---|
| committer | 2025-11-22 14:22:11 -0500 | |
| commit | 0d6d13425015d78606232874498327cabcb0e4e2 (patch) | |
| tree | 34682f9e9602117dac6db5f7de8c67d1207135c4 /src/fruits/cmv | |
| parent | d4ea79a8622b6bf03555f186aeb1f5fa9283721f (diff) | |
| download | camu-0d6d13425015d78606232874498327cabcb0e4e2.tar.gz camu-0d6d13425015d78606232874498327cabcb0e4e2.tar.bz2 camu-0d6d13425015d78606232874498327cabcb0e4e2.zip | |
Fixes and cleanup around synced gapless
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/fruits/cmv')
| -rw-r--r-- | src/fruits/cmv/cmv.c | 34 |
1 files changed, 22 insertions, 12 deletions
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; } |