Skip to content
Snippets Groups Projects
Commit ac7e9ca7 authored by Deucе's avatar Deucе :ok_hand_tone4:
Browse files

Don't bother starting the SDL thread just to shut it down.

Fixes issue closing SyncTERM in curses mode on macOS.
parent eac02d15
No related branches found
No related tags found
No related merge requests found
Pipeline #6171 passed
...@@ -2018,30 +2018,39 @@ struct main_args { ...@@ -2018,30 +2018,39 @@ struct main_args {
int argc; int argc;
char **argv; char **argv;
int ret; int ret;
int no_sdl; enum {
SDL_NOT_STARTED,
SDL_STARTED,
SDL_ENDED
} sdl_state;
}; };
int CIOLIB_main(int, char **); int CIOLIB_main(int, char **);
void main_stub(void *argptr) void main_stub(void *argptr)
{ {
bool exit_sdl = false;
struct main_args *args = (struct main_args *)argptr; struct main_args *args = (struct main_args *)argptr;
args->ret = CIOLIB_main(args->argc, args->argv); args->ret = CIOLIB_main(args->argc, args->argv);
args->no_sdl = 1; if (args->sdl_state == SDL_STARTED)
exit_sdl = true;
args->sdl_state = SDL_ENDED;
sem_post(&startsdl_sem); sem_post(&startsdl_sem);
exit_sdl_con(); if (exit_sdl)
exit_sdl_con();
sem_post(&main_sem); sem_post(&main_sem);
} }
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
struct main_args ma = {argc, argv, -1, 0}; struct main_args ma = {argc, argv, -1, SDL_NOT_STARTED};
sem_init(&startsdl_sem, 0, 0); sem_init(&startsdl_sem, 0, 0);
sem_init(&main_sem, 0, 0); sem_init(&main_sem, 0, 0);
initsdl_ret = init_sdl_video(); initsdl_ret = init_sdl_video();
_beginthread(main_stub, 0, &ma); _beginthread(main_stub, 0, &ma);
if (!ma.no_sdl) { if (initsdl_ret != -1) {
if (initsdl_ret != -1) { sem_wait(&startsdl_sem);
sem_wait(&startsdl_sem); if (ma.sdl_state == SDL_NOT_STARTED) {
ma.sdl_state = SDL_STARTED;
sdl_video_event_thread(NULL); sdl_video_event_thread(NULL);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment