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++; }