aboutsummaryrefslogtreecommitdiff
path: root/backends/platform/android/org/inodes
diff options
context:
space:
mode:
Diffstat (limited to 'backends/platform/android/org/inodes')
-rw-r--r--backends/platform/android/org/inodes/gus/scummvm/ScummVM.java13
-rw-r--r--backends/platform/android/org/inodes/gus/scummvm/ScummVMActivity.java42
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;