From 3de2dad0d4d6b26b2d47b3fa3cb65a1531cece51 Mon Sep 17 00:00:00 2001 From: kichikuou Date: Sun, 27 Mar 2016 19:11:38 +0900 Subject: [PATCH] Use SDL thread --- src/sys/mako.cpp | 11 ++++++----- src/sys/mako.h | 5 ++--- src/sys/nact.cpp | 11 ++++++----- src/sys/nact.h | 5 ++--- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/sys/mako.cpp b/src/sys/mako.cpp index c97e36a..689984b 100644 --- a/src/sys/mako.cpp +++ b/src/sys/mako.cpp @@ -29,8 +29,7 @@ MAKO::MAKO(NACT* parent) : nact(parent) params.mako = this; params.current_music = params.next_music = 0; params.request_fill = params.terminate = false; - hThread = (HANDLE)_beginthread(thread, 0, ¶ms); - SetThreadPriority(hThread, THREAD_PRIORITY_HIGHEST); + hThread = SDL_CreateThread(thread, "MidiThread", ¶ms); } MAKO::~MAKO() @@ -38,7 +37,7 @@ MAKO::~MAKO() // MIDI再生スレッド終了 params.terminate = true; if(hThread) { - WaitForSingleObject(hThread, INFINITE); + SDL_WaitThread(hThread, NULL); } hThread = NULL; @@ -48,11 +47,13 @@ MAKO::~MAKO() #endif } -void MAKO::thread(PVOID pvoid) +int MAKO::thread(void* pvoid) { volatile PPARAMS pparams; pparams = (PPARAMS)pvoid; + SDL_SetThreadPriority(SDL_THREAD_PRIORITY_HIGH); + // MIDI初期化 pparams->mako->initialize_midi(); @@ -92,7 +93,7 @@ void MAKO::thread(PVOID pvoid) pparams->mako->stop_midi(); pparams->mako->release_midi(); - _endthread(); + return 0; } void MAKO::play_music(int page) diff --git a/src/sys/mako.h b/src/sys/mako.h index 954101b..5a58a54 100644 --- a/src/sys/mako.h +++ b/src/sys/mako.h @@ -8,7 +8,6 @@ #define _MAKO_H_ #include -#include #include #include #include @@ -47,8 +46,8 @@ private: } PARAMS, *PPARAMS; PARAMS params; - static void thread(PVOID pvoid); - HANDLE hThread; + static int thread(void* pvoid); + SDL_Thread* hThread; // MIDI音源 union UNION_MIDI_DATA { diff --git a/src/sys/nact.cpp b/src/sys/nact.cpp index a8022e5..4193f32 100644 --- a/src/sys/nact.cpp +++ b/src/sys/nact.cpp @@ -131,8 +131,7 @@ NACT::NACT() // メインスレッド起動 params.nact = this; params.terminate = false; - hThread = (HANDLE)_beginthread(thread, 0, ¶ms); - SetThreadPriority(hThread, THREAD_PRIORITY_NORMAL); + hThread = SDL_CreateThread(thread, "NactThread", ¶ms); } NACT::~NACT() @@ -140,7 +139,7 @@ NACT::~NACT() // メインスレッド終了 params.terminate = true; if(hThread) { - WaitForSingleObject(hThread, INFINITE); + SDL_WaitThread(hThread, NULL); } hThread = NULL; @@ -161,12 +160,14 @@ NACT::~NACT() release_console(); } -void NACT::thread(PVOID pvoid) +int NACT::thread(void* pvoid) { volatile PPARAMS pparams; pparams = (PPARAMS)pvoid; int sleep_cnt = 0; + SDL_SetThreadPriority(SDL_THREAD_PRIORITY_NORMAL); + while(!pparams->terminate) { pparams->nact->execute(); // 512コマンド実行毎にSleep(10) @@ -176,7 +177,7 @@ void NACT::thread(PVOID pvoid) Sleep(0); } } - _endthread(); + return 0; } // コマンドパーサ diff --git a/src/sys/nact.h b/src/sys/nact.h index bf16927..6c458c6 100644 --- a/src/sys/nact.h +++ b/src/sys/nact.h @@ -8,7 +8,6 @@ #define _NACT_H_ #include -#include #if defined(_DEBUG_CONSOLE) #include #endif @@ -231,8 +230,8 @@ private: } PARAMS, *PPARAMS; PARAMS params; - static void thread(PVOID pvoid); - HANDLE hThread; + static int thread(void* pvoid); + SDL_Thread* hThread; // デバッグログ void initialize_console();