diff options
author | dhewg | 2011-02-26 18:44:17 +0100 |
---|---|---|
committer | dhewg | 2011-02-27 09:04:37 +0100 |
commit | 0e869a5cf0e455f7cd5ce5c39192f3433b931e97 (patch) | |
tree | 992bc587994ce7fd3bf9048438b1881dcf3b94be /backends/platform/android/jni.cpp | |
parent | bea57f695064c6f084ff26405d91b812848fee33 (diff) | |
download | scummvm-rg350-0e869a5cf0e455f7cd5ce5c39192f3433b931e97.tar.gz scummvm-rg350-0e869a5cf0e455f7cd5ce5c39192f3433b931e97.tar.bz2 scummvm-rg350-0e869a5cf0e455f7cd5ce5c39192f3433b931e97.zip |
ANDROID: Pause the AudioTrack when possible
Only works in situations without any registered channels (or all paused)
at the mixer (like on the launcher or GMM).
CPU usage before (Galaxy Tab):
~5% scummvm
~15% mediaserver
After:
~2% scummvm
0% mediaserver
;)
Diffstat (limited to 'backends/platform/android/jni.cpp')
-rw-r--r-- | backends/platform/android/jni.cpp | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/backends/platform/android/jni.cpp b/backends/platform/android/jni.cpp index 5e11203db8..8964fe63d8 100644 --- a/backends/platform/android/jni.cpp +++ b/backends/platform/android/jni.cpp @@ -64,6 +64,7 @@ jmethodID JNI::_MID_setupScummVMSurface = 0; jmethodID JNI::_MID_destroyScummVMSurface = 0; jmethodID JNI::_MID_swapBuffers = 0; +jmethodID JNI::_MID_AudioTrack_flush = 0; jmethodID JNI::_MID_AudioTrack_pause = 0; jmethodID JNI::_MID_AudioTrack_play = 0; jmethodID JNI::_MID_AudioTrack_stop = 0; @@ -332,6 +333,15 @@ void JNI::addSysArchivesToSearchSet(Common::SearchSet &s, int priority) { void JNI::setAudioPause() { JNIEnv *env = JNI::getEnv(); + env->CallVoidMethod(_jobj_audio_track, _MID_AudioTrack_flush); + + if (env->ExceptionCheck()) { + warning("Error flushing AudioTrack"); + + env->ExceptionDescribe(); + env->ExceptionClear(); + } + env->CallVoidMethod(_jobj_audio_track, _MID_AudioTrack_pause); if (env->ExceptionCheck()) { @@ -417,6 +427,7 @@ void JNI::create(JNIEnv *env, jobject self, jobject am, jobject at, return; \ } while (0) + FIND_METHOD(flush, "()V"); FIND_METHOD(pause, "()V"); FIND_METHOD(play, "()V"); FIND_METHOD(stop, "()V"); |