52 lines
1.5 KiB
C
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
|