サウンド管理でコマンドを javaに送る処理、そしてキューの中身を受け取ってサウンドプレイヤーの処理を実行する部分を作成します。これでサウンドの非同期処理の実装完了となります。
Sound.cpp
/**********
終了
**********/
void SoundManager::quit(void)
{
{ // コマンド停止
JNIEnv* env;
Bool attach_flag = FALSE;
if ( g_JavaVM->GetEnv((void**)&env, JNI_VERSION_1_6) < 0 ) {
if ( g_JavaVM->AttachCurrentThread(&env, NULL) < 0 ) {
goto error;
}
attach_flag = TRUE;
}
jclass clazz = env->FindClass("sys/SoundManager");
if ( clazz ) {
jmethodID mid = env->GetStaticMethodID(clazz, "stop_command", "()V");
if ( mid ) {
env->CallStaticVoidMethod(clazz, mid);
}
}
if ( attach_flag ) {
g_JavaVM->DetachCurrentThread();
}
}
error :
if ( player ) {
delete[] player;
player = NULL;
}
SoundPlayer::quit_engine(); // サウンドエンジン終了
}
サウンド管理終了時、まだキューにコマンドが残っている可能性がありますので java側の関数を呼んでクリアしています。
セコメントをする