コード例 #1
0
ファイル: emulator.cpp プロジェクト: banyapon/androidsnes
static void Emulator_run(JNIEnv *env, jobject self)
{
	jEnv = env;

	pthread_mutex_init(&emuStateMutex, NULL);
	pthread_cond_init(&emuStateCond, NULL);

	while (true) {
		pthread_mutex_lock(&emuStateMutex);
		while (emuState == EMUSTATE_PAUSED)
			pthread_cond_wait(&emuStateCond, &emuStateMutex);
		if (emuState == EMUSTATE_QUIT) {
			pthread_mutex_unlock(&emuStateMutex);
			break;
		}
		if (emuState == EMUSTATE_REQUEST_RUN) {
			emuState = EMUSTATE_RUNNING;
			pthread_cond_signal(&emuStateCond);
		}
		pthread_mutex_unlock(&emuStateMutex);

		runEmulator();

		pthread_mutex_lock(&emuStateMutex);
		if (emuState == EMUSTATE_REQUEST_PAUSE) {
			emuState = EMUSTATE_PAUSED;
			pthread_cond_signal(&emuStateCond);
		}
		pthread_mutex_unlock(&emuStateMutex);
	}
}
コード例 #2
0
ファイル: emulator.cpp プロジェクト: banyapon/androidsnes
static void *emuThreadProc(void *arg)
{
	while (true) {
		pthread_mutex_lock(&emuStateMutex);
		while (emuState == EMUSTATE_PAUSED)
			pthread_cond_wait(&emuStateCond, &emuStateMutex);
		if (emuState == EMUSTATE_QUIT) {
			pthread_mutex_unlock(&emuStateMutex);
			break;
		}
		if (emuState == EMUSTATE_REQUEST_RUN) {
			emuState = EMUSTATE_RUNNING;
			pthread_cond_signal(&emuStateCond);
		}
		pthread_mutex_unlock(&emuStateMutex);

		runEmulator();

		pthread_mutex_lock(&emuStateMutex);
		if (emuState == EMUSTATE_REQUEST_PAUSE) {
			emuState = EMUSTATE_PAUSED;
			pthread_cond_signal(&emuStateCond);
		}
		pthread_mutex_unlock(&emuStateMutex);
	}
	return NULL;
}
コード例 #3
0
ファイル: WorkerThread.cpp プロジェクト: MrFlibb/WHDRun
void WorkerThread::run() {
	m_die = false;
	if(!m_die) runTest();
	if(!m_die) runConfig();
	if(!m_die) runUnzip();
	if(!m_die) runEmulator();
	if(!m_die) runRezip();
}
コード例 #4
0
ファイル: emulator.c プロジェクト: nunomota/chip8-emulator
int main() {

    chip8 chip;

    initChip(&chip);
    requestRom(&chip);
    runEmulator(&chip);
    return 0;
}