gpsp/retro_emu_thread.h

52 lines
1.5 KiB
C

#ifndef EMU_THREAD_H
#define EMU_THREAD_H
#include "common.h"
/* gpSP doesn't have a top-level main loop that we can use, so instead we run it in its own thread
* and switch between it and the main thread. Calling this function will block the current thread
* and unblock the other.
*
* This function can be called from either the main or the emulation thread.
*/
void retro_switch_thread(void);
/* Initialize the emulation thread and any related resources.
*
* Only call this function from the main thread.
*/
bool retro_init_emu_thread(bool dynarec, u32 cycles);
/* Destroy the emulation thread and any related resources. Only call this after the emulation thread
* has finished (or canceled) and joined.
*
* Only call this function from the main thread.
*/
void retro_deinit_emu_thread(void);
/* Returns true if the emulation thread was initialized successfully.
*
* This function can be called from either the main or the emulation thread.
*/
bool retro_is_emu_thread_initialized(void);
/* Join the emulation thread. The thread must have exited naturally or been canceled.
*
* Only call this function from the main thread.
*/
void retro_join_emu_thread(void);
/* Cancel the emulation thread.
*
* Only call this function from the main thread.
*/
void retro_cancel_emu_thread(void);
/* Returns true if the emulation thread has exited naturally.
*
* This function can be called from either the main or the emulation thread.
*/
bool retro_emu_thread_exited(void);
#endif