aboutsummaryrefslogtreecommitdiff
path: root/backends/platform
diff options
context:
space:
mode:
authorlubomyr2017-01-30 22:35:40 +0200
committerlubomyr2017-01-30 22:35:40 +0200
commit15acee29f19c845dc534d2c8af48a449ea1cd380 (patch)
tree5dd92b665f9131a0903bbaf15c913dc63d5ddf90 /backends/platform
parentca55163ea1daa6e322ef1ddf4615ad73b4634e0d (diff)
downloadscummvm-rg350-15acee29f19c845dc534d2c8af48a449ea1cd380.tar.gz
scummvm-rg350-15acee29f19c845dc534d2c8af48a449ea1cd380.tar.bz2
scummvm-rg350-15acee29f19c845dc534d2c8af48a449ea1cd380.zip
ANDROIDSDL: implemented checkbox for change mouse mode in Options menu
Diffstat (limited to 'backends/platform')
-rw-r--r--backends/platform/androidsdl/androidsdl-sdl.cpp33
-rw-r--r--backends/platform/androidsdl/androidsdl-sdl.h4
2 files changed, 37 insertions, 0 deletions
diff --git a/backends/platform/androidsdl/androidsdl-sdl.cpp b/backends/platform/androidsdl/androidsdl-sdl.cpp
index d04512475a..ab0c0524f1 100644
--- a/backends/platform/androidsdl/androidsdl-sdl.cpp
+++ b/backends/platform/androidsdl/androidsdl-sdl.cpp
@@ -27,6 +27,7 @@
#include "backends/platform/androidsdl/androidsdl-sdl.h"
#include "backends/events/androidsdl/androidsdl-events.h"
#include "backends/graphics/androidsdl/androidsdl-graphics.h"
+#include <SDL_android.h>
void OSystem_ANDROIDSDL::initBackend() {
// Create the backend custom managers
@@ -42,7 +43,39 @@ void OSystem_ANDROIDSDL::initBackend() {
if (!ConfMan.hasKey("gfx_mode"))
ConfMan.set("gfx_mode", "2x");
+
+ if (!ConfMan.hasKey("touchpad_mouse_mode")) {
+ const bool enable = (SDL_ANDROID_GetMouseEmulationMode() == 0) ? false : true;
+ ConfMan.setBool("touchpad_mouse_mode", enable);
+ } else {
+ touchpadMode(ConfMan.getBool("touchpad_mouse_mode"));
+ }
// Call parent implementation of this method
OSystem_POSIX::initBackend();
}
+
+void OSystem_ANDROIDSDL::touchpadMode(bool enable) {
+ if (enable)
+ switchToRelativeMouseMode();
+ else
+ switchToDirectMouseMode();
+}
+
+void OSystem_ANDROIDSDL::switchToDirectMouseMode() {
+ SDL_ANDROID_SetMouseEmulationMode(0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
+}
+
+void OSystem_ANDROIDSDL::switchToRelativeMouseMode() {
+ SDL_ANDROID_SetMouseEmulationMode(1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
+}
+
+void OSystem_ANDROIDSDL::setFeatureState(Feature f, bool enable) {
+ switch (f) {
+ case kFeatureTouchpadMode:
+ touchpadMode(enable);
+ break;
+ }
+
+ OSystem_POSIX::setFeatureState(f, enable);
+}
diff --git a/backends/platform/androidsdl/androidsdl-sdl.h b/backends/platform/androidsdl/androidsdl-sdl.h
index 6ebe5022eb..72d2a50093 100644
--- a/backends/platform/androidsdl/androidsdl-sdl.h
+++ b/backends/platform/androidsdl/androidsdl-sdl.h
@@ -28,6 +28,10 @@
class OSystem_ANDROIDSDL : public OSystem_POSIX {
public:
virtual void initBackend();
+ virtual void setFeatureState(Feature f, bool enable);
+ void touchpadMode(bool enable);
+ void switchToDirectMouseMode();
+ void switchToRelativeMouseMode();
#ifdef ENABLE_KEYMAPPER
// FIXME: This just calls parent methods, is it needed?