diff options
Diffstat (limited to 'backends/platform/androidsdl/androidsdl-sdl.cpp')
-rw-r--r-- | backends/platform/androidsdl/androidsdl-sdl.cpp | 33 |
1 files changed, 33 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); +} |