void graphics_thread_leave(void) { if(display_tid != 0) { write_comm_pipe_u32 (display_pipe, DISPLAY_SIGNAL_QUIT, 1); while(display_tid != 0) { sleep_millis(10); } destroy_comm_pipe(display_pipe); xfree(display_pipe); display_pipe = 0; uae_sem_destroy(&display_sem); display_sem = 0; } }
void free_traps(void) { for (int i = 0; i < TRAP_THREADS; i++) { if (trap_thread_id[i]) { if (hardware_trap_kill[i] >= 0) { hardware_trap_kill[i] = 0; write_comm_pipe_pvoid(&trap_thread_pipe[i], NULL, 1); while (hardware_trap_kill[i] == 0) { sleep_millis(1); } } destroy_comm_pipe(&trap_thread_pipe[i]); uae_end_thread(&trap_thread_id[i]); trap_thread_id[i] = NULL; } } }