summaryrefslogtreecommitdiff
path: root/src/fruits/cmv/cmv.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/fruits/cmv/cmv.c')
-rw-r--r--src/fruits/cmv/cmv.c22
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;
}