diff options
Diffstat (limited to 'src/fruits/cmv/cmv.c')
| -rw-r--r-- | src/fruits/cmv/cmv.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/fruits/cmv/cmv.c b/src/fruits/cmv/cmv.c index 74e3555..333588e 100644 --- a/src/fruits/cmv/cmv.c +++ b/src/fruits/cmv/cmv.c @@ -18,7 +18,7 @@ #include "icon.h" #endif -#ifndef NAUNET_ON_WINDOWS +#if !defined NAUNET_ON_WINDOWS && !defined NAUNET_ON_ANDROID // 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_"); @@ -45,6 +45,7 @@ static void exit_callback(void *userdata, struct camu_desktop *desktop) static nn_thread_result NNWT_THREADCALL event_loop_thread(void *userdata) { + nn_thread_set_priority(NNWT_THREAD_SCHED_FIFO, 40); struct cmv *c = (struct cmv *)userdata; nn_thread_set_name("event_loop"); nn_event_loop_run(&c->loop); @@ -174,9 +175,16 @@ s32 window_system_main(u32 argc, str *argv, void *extra) prefs->language.audio = CAMU_LANG_JAPANESE; prefs->language.subtitles = CAMU_LANG_ENGLISH; +#ifdef CAMU_DIRECT_MODE +#ifdef CAMU_SINK_ONLY +#error "Sink-only and DIRECT_MODE are incompatible" +#endif + if (!local) al_assert("Cannot connect to a server in DIRECT_MODE" && false); +#endif + #ifndef CAMU_SINK_ONLY if (local) { - camu_server_init(&c.server, &c.loop); + camu_server_init(&c.server, &c.loop, local); #ifdef CAMU_DIRECT_MODE camu_server_bind_direct(&c.server); #else @@ -212,8 +220,8 @@ s32 window_system_main(u32 argc, str *argv, void *extra) c.desktop.userdata = &c; } char *SINK_FORCE_LOCAL = getenv("SINK_FORCE_LOCAL"); - if (SINK_FORCE_LOCAL && al_strscmp(SINK_FORCE_LOCAL, "1") == 0) { - c.desktop.sink.local = true; + if (SINK_FORCE_LOCAL) { + c.desktop.sink.local = al_strscmp(SINK_FORCE_LOCAL, "1") == 0; } else { c.desktop.sink.local = local; } @@ -232,9 +240,9 @@ s32 window_system_main(u32 argc, str *argv, void *extra) nn_packet_free(packet); } if (extra) { - u32 start_index = *(u32 *)extra; + s32 start_index = *(s32 *)extra; if (start_index != 0) { - camu_server_local_set_index(&c.server, start_index); + camu_server_local_start_at(&c.server, start_index); } } } @@ -306,7 +314,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]))) { // This is so broken. + if (!al_str_from_wstr(&arg, &al_wstr_cr(argv[i]))) { log_error("Failed to convert argument #%i from a wide string.", i); continue; } |