diff options
Diffstat (limited to 'backends')
-rw-r--r-- | backends/platform/androidsdl/androidsdl-sdl.cpp | 33 | ||||
-rw-r--r-- | backends/platform/androidsdl/androidsdl-sdl.h | 4 |
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? |