From 20d7014e4af328709af021e88a14036846ad12cb Mon Sep 17 00:00:00 2001 From: "C.W. Betts" Date: Wed, 19 May 2021 15:49:03 -0600 Subject: [PATCH] macOS: Rename the window only on the main thread: macOS doesn't like non-main threads modifying the UI. --- src/pc.c | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/pc.c b/src/pc.c index f362378..7b1b4c0 100644 --- a/src/pc.c +++ b/src/pc.c @@ -1,9 +1,13 @@ #include #include #include -#if defined(__APPLE__) && defined(__aarch64__) +#ifdef __APPLE__ +#include +#include +#ifdef __aarch64__ #include #endif +#endif #include "ibm.h" #include "device.h" @@ -519,6 +523,14 @@ int serial_fifo_read, serial_fifo_write; int emu_fps = 0; +#ifdef __APPLE__ +static void _set_window_title(void *s) +{ + set_window_title((const char *)s); + free(s); +} +#endif + void runpc() { char s[200]; @@ -594,7 +606,12 @@ void runpc() { win_title_update=0; sprintf(s, "PCem v17 - %i%% - %s - %s - %s", fps, model_getname(), models[model].cpu[cpu_manufacturer].cpus[cpu].name, (!mousecapture) ? "Click to capture mouse" : ((mouse_get_type(mouse_type) & MOUSE_TYPE_3BUTTON) ? "Press CTRL-END to release mouse" : "Press CTRL-END or middle button to release mouse")); +#ifdef __APPLE__ + // Needed due to modifying the UI on the non-main thread is a big no-no. + dispatch_async_f(dispatch_get_main_queue(), strdup(s), _set_window_title); +#else set_window_title(s); +#endif } done++; }