diff options
Diffstat (limited to 'backends/platform/android/org/inodes')
-rw-r--r-- | backends/platform/android/org/inodes/gus/scummvm/ScummVM.java | 13 | ||||
-rw-r--r-- | backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java | 42 |
2 files changed, 37 insertions, 18 deletions
diff --git a/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java b/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java index 75407c66cc..ffb0109e6c 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java +++ b/backends/platform/android/org/inodes/gus/scummvm/ScummVM.java @@ -44,6 +44,7 @@ public abstract class ScummVM implements SurfaceHolder.Callback, Runnable { final private native void destroy(); final private native void setSurface(int width, int height); final private native int main(String[] args); + final private native void pauseEngine(boolean pause); // Set scummvm config options final public native void enableZoning(boolean enable); @@ -134,12 +135,14 @@ public abstract class ScummVM implements SurfaceHolder.Callback, Runnable { System.exit(res); } - public void pause() { - // TODO - } + public void pause(boolean pause) { + if (audio_track != null && !pause) + audio_track.play(); + + pauseEngine(pause); - public void resume() { - // TODO + if (audio_track != null && pause) + audio_track.stop(); } final private void initEGL() throws Exception { diff --git a/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java b/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java index 92247dea96..22ccaf0b62 100644 --- a/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java +++ b/backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java @@ -161,30 +161,46 @@ public class ScummVMActivity extends Activity { scummvm_thread.start(); } - private boolean was_paused = false; - @Override - public void onPause() { - if (scummvm != null) { - was_paused = true; - scummvm.pause(); - } + public void onStart() { + Log.d(ScummVM.LOG_TAG, "onStart"); - super.onPause(); + super.onStart(); } @Override public void onResume() { + Log.d(ScummVM.LOG_TAG, "onResume"); + super.onResume(); - if (scummvm != null && was_paused) - scummvm.resume(); + if (scummvm != null) + scummvm.pause(false); + } + + @Override + public void onPause() { + Log.d(ScummVM.LOG_TAG, "onPause"); + + super.onPause(); - was_paused = false; + if (scummvm != null) + scummvm.pause(true); } @Override public void onStop() { + Log.d(ScummVM.LOG_TAG, "onStop"); + + super.onStop(); + } + + @Override + public void onDestroy() { + Log.d(ScummVM.LOG_TAG, "onDestroy"); + + super.onDestroy(); + if (scummvm != null) { scummvm.pushEvent(new Event(Event.EVENT_QUIT)); @@ -194,9 +210,9 @@ public class ScummVMActivity extends Activity { } catch (InterruptedException e) { Log.i(ScummVM.LOG_TAG, "Error while joining ScummVM thread", e); } - } - super.onStop(); + scummvm = null; + } } static final int MSG_MENU_LONG_PRESS = 1; |